ฉันจะใช้หมายเลขบรรทัดสัมพัทธ์ในโหมดบรรทัดคำสั่งได้อย่างไร


16

เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้จากPractical Vimวิธีการคัดลอกหรือย้ายบล็อกของบรรทัดโดยไม่ต้องเลื่อนเคอร์เซอร์จากตำแหน่งปัจจุบัน สิ่งนี้จะทำในโหมดบรรทัดคำสั่ง เช่น

:123,133m.  # moves lines from 123 to 133 below the cursor position.

ในขณะที่ฉันชอบมันเป็นความเจ็บปวดที่จะพิมพ์หมายเลขบรรทัดยาวโดยเฉพาะเมื่อไฟล์มีจำนวนบรรทัดมากเกินไป

ในบางครั้งเส้นที่จะย้ายค่อนข้างใกล้เคอร์เซอร์ (แต่ฉันไม่ต้องการเลื่อนเคอร์เซอร์ของฉันงัดแงะกลับมาที่ที่ฉันเคยแปะ!) มันจะดีมากถ้าฉันสามารถใช้หมายเลขสัมพัทธ์คล้ายกับที่เราทำในโหมดปกติ มันก็เหมือนกับการพูด

ย้าย 5 บรรทัดซึ่งเป็น 10 บรรทัดเหนือบรรทัดปัจจุบันไปที่นี่

ในระยะสั้นวิธีการใช้หมายเลขญาติในโหมดบรรทัดคำสั่ง (คล้ายกับโหมดปกติ)?

คำตอบ:


23

สมมติว่าบรรทัดของคุณมีตั้งแต่ 15 ถึง 10 บรรทัดเหนือบรรทัดปัจจุบันคุณสามารถบรรลุสิ่งที่คุณร้องขอโดยใช้หมายเลขบรรทัดสัมพัทธ์:

:-10,-15m.

โชคไม่ดีเมื่อระบุช่วงถอยหลังเป็นกลุ่มขอให้คุณยืนยันว่าเป็นสิ่งที่คุณต้องการจริงๆ เพื่อหลีกเลี่ยงขั้นตอนการยืนยันคุณสามารถพิมพ์silentก่อนคำสั่งของคุณหรือเพียงแค่ระบุช่วงการส่งต่อ:

:-15,-10m.

ตามที่คุณคาดหวัง+สามารถใช้เพื่ออ้างถึงบรรทัดด้านล่างบรรทัดปัจจุบัน

ความช่วยเหลือโดยละเอียดสามารถพบได้ด้วย:

:help cmdline-ranges

1
แต่ฉันไม่เคยใช้คุณสมบัตินี้ 15k d5j 10j Pที่ฉันทำ
joeytwiddle

ข้อแตกต่างคือ 15k, 5j ทำงานในโหมดคำสั่งและคำอธิบายในคำตอบนั้นอยู่ในโหมดแทรก ดังนั้นขึ้นอยู่กับโหมดเราสามารถเลือกหนึ่งที่เหมาะสม คำสั่งในโหมดแทรกโดยทั่วไปจะเป็นเกณฑ์การเลือกสำหรับการเรียกใช้คำสั่งอื่น ๆ
Soundararajan

12

คุณสามารถใช้ตัวเลขหนักในช่วงของคุณ:

:200,300command

หรือหมายเลขญาติ:

:-27,+46command

หรือเครื่องหมายด้วยตนเอง:

:'a,'bcommand

หรือเครื่องหมายอัตโนมัติ:

:'[,'>command

หรือค้นหา:

:?foo?,/bar/command

หรือทางลัดบรรทัด:

:.,$command

หรือการรวมกันของเทคนิคข้างต้น:

:?foo?,+46command
:'a,$command
...

3

คุณสามารถใช้การกำหนดที่อยู่แบบสัมพัทธ์ (เช่น.-10,.+3) กับคำสั่ง Ex ใด ๆ cp :help :range.

อีกวิธีหนึ่งคือมีลักษณะที่ฉันปลั๊กอิน LineJuggler ; [count]จะให้แมปสั้นหลายที่จะย้ายเส้นรอบหรือซ้ำพวกเขาและการแมปทุกคนที่ใช้เส้นญาติชดเชยเป็น

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