VIM: วิธีไปที่บรรทัดที่แน่นอนบน Ubuntu


87

ฉันใช้viบน Ubuntu 12.10 บางไฟล์ค่อนข้างยาวดังนั้นเมื่อฉันต้องการไปที่ตรงกลางของไฟล์ฉันต้องเลื่อนหน้าลงหรือเลื่อนลง

มีทางลัด VIM เพื่อไปยังหมายเลขบรรทัดที่แน่นอนหรือไม่?


@vim ผู้เชี่ยวชาญ นี่เป็นเฉพาะ Ubuntu- / bash- / Linux (ตามแท็ก OP) หรือไม่ ฉันไม่ได้ใช้ vim มากนัก แต่สำหรับการใช้งานของฉันฉันไม่ได้สังเกตเห็นความแตกต่างแม้แต่น้อยใน Ubuntu / CentOS / Suse / Windows
Alexander Malakhov

คำตอบ:


146
:150

จะพาคุณไปที่บรรทัด 150 ใน vi

:1500

จะพาคุณไปที่บรรทัด 1500 ใน vi

ตามความคิดเห็นที่คุณอาจต้องการลอง

150G

เพื่อไปที่บรรทัด 150 ซึ่งเป็นจังหวะที่สำคัญน้อยกว่า :150Enter หากคุณไม่แน่ใจว่าคุณกำลังลองบรรทัดใด

 :set nu!

สังเกต:

หากคุณต้องการดูบรรทัดเสมอให้พิจารณาแก้ไขโปรไฟล์กลุ่มของคุณ ส่วนใหญ่มักจะ

vi ~/.vimrc

และเพิ่ม

:set nu! 

และเขียนและออก

:wq
#or you could use :x

สามารถทำได้ภายนอก vi ตัวอย่างเช่นหากฉันต้องการลบบรรทัด 5000 ในไฟล์ข้อความฉันสามารถใช้ภาษาสคริปต์ได้ ตัวอย่างเช่นการใช้ sed จะเป็นดังต่อไปนี้

sed -i '5000d;' inputFile.txt

หากต้องการลบบรรทัดที่ 10 ถึง 20 ก็จะเป็น

sed -i '10,20d;' inputFile.txt

สังเกตว่า -i จะแก้ไขไฟล์ในสถานที่ หากไม่มี -i มันจะไปที่ stdout ลองมัน. คุณสามารถเปลี่ยนเส้นทาง stdout ไปยังไฟล์

sed '5001,$d;' inputFile.txt >> appenedFile.txt

สิ่งนี้อาจเกิดขึ้นมากมายสำหรับคุณ สิ่งนี้จะลบบรรทัด 5001 ถึง $ โดยมี $ เป็นส่วนท้ายของไฟล์ >> จะต่อท้ายไฟล์ โดยที่> สร้างไฟล์ใหม่

หากคุณสงสัยว่ามีกี่บรรทัดในไฟล์คุณอาจต้องการพิมพ์ wc -l inputFile.txt

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

sed สามารถค้นหาและแทนที่ภายในไฟล์ได้เช่นกัน แต่บางที awk, perl หรือ python ก็อาจเป็นทางออกที่ใช้ได้เช่นกัน

แต่โดยรวมแล้วคุณอาจต้องการหาบทช่วยสอนที่ดีเกี่ยวกับ vi หลายพันอยู่ ฉันจะปรึกษา Google บางทีอาจพบว่าตัวเองเป็น VIM Cheatsheat


ไม่มีปัญหาฉันขยายคำตอบของฉันเล็กน้อย แต่ Good luck
matchew

2
นอกจากนี้ในกลุ่มคุณสามารถพิมพ์: n50% และไปที่ตรงกลางของไฟล์
Eric Fortis

1
ในโหมดปกติ150Gจะทำเช่นเดียวกับ:150. มันไม่เร็วกว่า แต่อาจจำง่ายกว่า
romainl

@romainl 150gg ก็เช่นเดียวกัน ซึ่งทั้งสองเร็วกว่า: 150 <cr>
Randy Morris

@ แรนดี้มอร์ริส - ใช่เร็วกว่าฉันลืมคำนึง<CR>ถึง
romainl

14

เคล็ดลับอื่น ๆ ในกลุ่ม: ในโหมดคำสั่ง

  • H ไปที่ด้านบนสุดของหน้าจอ
  • M ไปที่ตรงกลางของหน้าจอ
  • L ไปที่ด้านล่างของหน้าจอ
  • gg ไปที่บรรทัดแรก
  • G ไปที่บรรทัดสุดท้าย

7

ใช้เวลาไม่กี่นาทีและเริ่มต้นการอ่านนี้เอกสาร เป็นการตอบแทนคุณในระยะยาวสำหรับประสิทธิภาพในการแก้ไขไฟล์ config โดยเฉพาะ


ลิงค์เสียชีวิตแล้ว
Peter David Carter

6

จากเทอร์มินัลที่เปิดอยู่ใน bash shell เพียงแก้ไขไฟล์ของคุณโดยเรียกใช้:

$ vi +N yourfile

Nหมายเลขบรรทัดอยู่ที่ไหน.

สำหรับการดู ( moreหรือless;):

$ less +N yourfile
$ more +N yourfile

เข้าสู่ระบบ+หมายถึงคำสั่งที่จะทำงานในช่วงเริ่มต้น ดังนั้นหากคำสั่งเป็นเพียงจำนวนแล้วvi, lessและmoreจะกระโดดถึงนี้เป็นหมายเลขบรรทัดหมายเลขบรรทัด

แต่คุณยังสามารถใช้/regexเพื่อค้นหาการเกิดขึ้นครั้งแรกของสตริงหรือนิพจน์ทั่วไป:

$ less +/Error logfile
$ less -i +/error logfile      # -i Causes less's searches to ignore case
$ vi +/open.*myfile myprog...
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.