การเคลื่อนย้าย (อย่างมีประสิทธิภาพ) ในแนวตั้งเป็นกลุ่ม


27

เมื่อฉันต้องการเข้าถึงบางส่วนของคำใน Vim (แนวนอน) ฉันเพียงกด w, b, f หรือ t (บางอย่าง) มีวิธีที่ดีในการทำสิ่งนี้ในแนวตั้งหรือไม่? ตัวอย่างเช่นฉันต้องการได้คำหรือตัวอักษรของบรรทัดที่ต่ำกว่าหรือสูงกว่าบรรทัดที่ฉันอยู่

PS: โดยไม่ใช้: (หมายเลขบรรทัด)

คำตอบ:


29

H, MและLจะเลื่อนเคอร์เซอร์ไปด้านบนกลางและล่างของหน้าจอตามลำดับ จากนั้นคุณสามารถกดzzเพื่อให้หน้าจออยู่กึ่งกลางบรรทัดที่เคอร์เซอร์อยู่


5
และ zb และ zt ย้ายหน้าจอที่ด้านล่างและด้านบนตามลำดับ
Jani Hartikainen

11
  • คุณสามารถใช้ลูกศรขึ้น / ลงเพื่อเลื่อนไปหนึ่งบรรทัด
  • คุณสามารถพิมพ์ตัวเลขแล้วใช้ลูกศรขึ้น / ลงเพื่อเลื่อนขึ้น / ลงหลายบรรทัด
  • gกระโดดเล็ก ๆไปที่บรรทัดแรกของเอกสาร
  • ตัวพิมพ์ใหญ่Gกระโดดไปที่บรรทัดสุดท้ายของเอกสาร
  • เป็นต้น

มีอีกหลายพันล้านวิธีที่แตกต่างกันมีความยืดหยุ่นในแง่นี้มาก ฉันอยากจะแนะนำให้รับแผ่นโกงเป็นกลุ่มเป็นครั้งแรกสำหรับคำสั่งพื้นฐานและจากนั้นเมื่อคุณมีเวลาให้อ่านเอกสารเป็นกลุ่มในหัวข้อนี้

เชื่อมโยงไปยังหนึ่งสูตรโกง: แผ่นโกง

นอกจากนี้:

  • /+ string + (Enter)ค้นหาการเกิดขึ้นครั้งถัดไปของสตริงจากเคอร์เซอร์ไปข้างหน้าจนถึงท้ายเอกสาร
  • ? - ทำแบบเดียวกัน แต่จากเคอร์เซอร์ไปด้านหลังจนถึงจุดเริ่มต้นของเอกสาร


6

ฉันกระโดดไปรอบ ๆ โดยค้นหาสตริงที่ไม่เหมือนใครที่ฉันต้องการไป ในกลุ่มคุณสามารถทำได้ด้วย:

/ ค้นหาสตริง

ฉันมักจะเลื่อนไปข้างหน้าและข้างหลังโดยใช้ n และ N เมื่อฉันเข้าสู่การค้นหา

ฉันเลื่อนโดยใช้ Ctrl-F และ Ctrl-B เพื่อเลื่อนดูโค้ดอย่างรวดเร็ว แต่ฉันใช้เคล็ดลับการค้นหาบ่อยที่สุด บางครั้งคุณอาจหลงทางเมื่อผ่านผลการค้นหาด้วย n และ N คำสั่งที่ดีสำหรับการปรับทิศทางของคุณคือ Ctrl-G ซึ่งพิมพ์สิ่งนี้ที่ด้านล่างของหน้าจอ Vim:

"script.pl" บรรทัด 219 จาก 328 --66% - col 19-23


+1 สำหรับ <CTRL> -F และ <CTRL> -B แม้ว่าฉันมักจะ "โกง" และใช้ <PgUp> และ <PgDown> เกือบบ่อย!
technomalogical

4

ลอง:: เขา motion.txt และ: เขาเคลื่อนไหวขึ้นลง

มันมีรายการเคลื่อนไหวที่เป็นไปได้ทั้งหมดขึ้นลง


3

นอกจากนี้คุณยังสามารถข้ามไปยังบรรทัดที่ระบุในเอกสารโดยการออกNggที่Nเป็นหมายเลขบรรทัดที่คุณต้องการข้าม


1
คุณหมายถึงNG...
Peter

1
ฉันใช้Nggเหมือนกัน (ทั้งสองรุ่นทำงาน)
ชีวิต

1
เช่นเดียวกับ:N
viraptor

3

คุณควรลองใช้ปลั๊กอิน easymotionของLokaltog : http://www.vim.org/scripts/script.php?script_id=3526

ปลั๊กอิน Easymotion ในที่ทำงาน


easymotion นั้นดีจริงๆ แต่ฉันไม่รู้ว่าทำไมถึงทำให้ส่วนนั้นอยู่เหนือเคอร์เซอร์ มันเน้นเฉพาะที่ด้านล่างเคอร์เซอร์
nXqd

2

ดังที่ได้กล่าวไว้ก่อนหน้านี้ H, M, L (ในกรณีที่สูง, กลาง, ต่ำ) hjkl เป็นคำสั่งเกมคอนโซลทั่วไปสำหรับซ้าย, ลง, ขึ้น, ขวาและทำงานเหมือนกันใน vi (j, k ทำงานใน gmail หากคุณเปิดใช้งาน คำสั่งที่สำคัญ)


1

<Ctrl>+D - ลง

<Ctrl>+U - ขึ้น


นั่นคือการเลื่อนหน้ากระดาษครึ่งหนึ่ง สำหรับการเลื่อนหน้าเต็มใช้<c-f>และ<c-b>
อัลจี

1

นอกเหนือจากการเคลื่อนไหวตามแนวตั้งปกติฉันใช้/programming/4946421/vim-moving-with-hjkl-in-long-lines-screen-linesเวอร์ชันที่แก้ไขแล้ว ฉันมักจะย้ายไปอยู่กับปุ่มลูกศรไม่ใช่ hjkl (ผู้ใช้งานเวลานานของบรรณาธิการอื่น ๆ ก่อนที่ฉันจะพบ Vim ใช้กับลูกศร / Home / end / PgUp / PgDn เพื่อสลับแม้หลังจากใช้ Vim 5 ปีขึ้นไป)

function! ScreenMovement(movement)
   if &wrap
      return "g" . a:movement
   else
      return a:movement
   endif
endfunction
map <expr> <C-Down> ScreenMovement("j")
map <expr> <C-Up> ScreenMovement("k")
map <expr> <C-Home> ScreenMovement("0")
map <expr> <C-End> ScreenMovement("$")

ด้วยการกดปุ่ม Ctrl ฉันสามารถมองเห็นเพื่อเริ่ม / สิ้นสุดหรือขึ้น / ลงแถวที่แสดง สำหรับฉันนี้มีประสิทธิภาพมากกว่าทางเลือกอย่างน้อย

เกือบลืม: ฉันต้องการแก้ไข. Xdefaults เพื่อให้ทำงานใน urxvt โดยเฉพาะ แต่นั่นอาจเป็นปัญหานอกหัวข้อ (พร้อมคำตอบบน Google)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.