วิธีลบข้อความที่เลือกในตัวแก้ไข vi


116

ฉันใช้ PuTTY และตัวแก้ไข vi ถ้าฉันเลือกห้าบรรทัดโดยใช้เมาส์ของฉันและฉันต้องการลบบรรทัดเหล่านั้นฉันจะทำได้อย่างไร?

นอกจากนี้ฉันจะเลือกเส้นโดยใช้แป้นพิมพ์ของฉันได้อย่างไรใน Windows ที่ฉันกดShiftและย้ายลูกศรเพื่อเลือกข้อความ ฉันจะทำสิ่งนั้นใน vi ได้อย่างไร


1
ฉันมีรายชื่อคนที่พิมพ์ แต่ไม่พบวิธีลบข้อความที่เลือก

x ลบอักขระทางด้านขวาของเคอร์เซอร์ X ลบอักขระทางด้านซ้ายของเคอร์เซอร์ D ลบที่ท้ายบรรทัด dd ลบบรรทัดปัจจุบัน: d ลบบรรทัดปัจจุบันจาก lagmonster.org/docs/vi.html หวังว่าจะช่วยได้เล็กน้อย
Mawg กล่าวว่าคืนสถานะโมนิกา

1
เป็นกลุ่มคำถามเกี่ยวกับ superuser? ฮ่า ๆ!
Pascal Thivent

1
@Pascal: อืมใช่คุณพูดถูก คำตอบที่จัดรูปแบบไว้อย่างสวยงามโดยวิธีการ โอ้และคำถามของเขา / เธอไม่ได้เกี่ยวกับ VIM แต่เกี่ยวกับ VI ;)
Marcel Korpel

คำตอบ:


215

ฉันใช้ PuTTY และตัวแก้ไข vi ถ้าฉันเลือกห้าบรรทัดโดยใช้เมาส์ของฉันและฉันต้องการลบบรรทัดเหล่านั้นฉันจะทำได้อย่างไร?

ลืมเมาส์ หากต้องการลบ 5 บรรทัดให้ทำดังนี้

  • ไปที่บรรทัดแรกแล้วพิมพ์d5d( ddลบหนึ่งบรรทัดd5dลบ 5 บรรทัด) ~ หรือ ~
  • พิมพ์Shift-vที่จะเข้าสู่โหมดการเลือก linewiseแล้วเลื่อนเคอร์เซอร์ลงโดยใช้j(ใช่การใช้งานh, j, kและlเลื่อนไปทางซ้าย , ลง , ขึ้น , ขวาตามลำดับที่มีประสิทธิภาพมากขึ้นกว่าการใช้ลูกศร) และพิมพ์dลบที่เลือก

นอกจากนี้ฉันจะเลือกเส้นโดยใช้แป้นพิมพ์ของฉันได้อย่างไรใน Windows ที่ฉันกดShiftและย้ายลูกศรเพื่อเลือกข้อความ ฉันจะทำสิ่งนั้นใน vi ได้อย่างไร

ดังที่ฉันได้กล่าวไปแล้วใช้Shift-vเพื่อเข้าสู่โหมดการเลือกเส้นหรือvเพื่อเข้าสู่โหมดการเลือกตามอักขระหรือCtrl-vเพื่อเข้าสู่โหมดการเลือกแบบบล็อก จากนั้นย้ายไปอยู่กับh, j, และkl

ฉันขอแนะนำให้ใช้เวลากับ Vim Tutor (run vimtutor) เพื่อทำความคุ้นเคยกับ Vim มากขึ้นด้วยวิธีการสอน

ดูสิ่งนี้ด้วย


1
ที่จริงแล้ว vim รองรับเมาส์ได้ดีหากเครื่องของคุณรองรับ ตัวอย่างเช่นการใช้gpmdaemon ในคอนโซลหรือการรันxtermหรือkonsoleในสภาพแวดล้อมแบบกราฟิกคุณสามารถบอก vim set mouse=a(หรือเพิ่มลงใน. vimrc ของคุณ) และเมาส์สามารถใช้สำหรับการเลือกปรับขนาดการแยก ฯลฯ
Ben Voigt

@ Ben คุณพูดถูกฉันไม่ได้ใช้เมาส์เลย แต่ไม่ได้หมายความว่า VIM ไม่สามารถจัดการกับมันได้ (ในบางสถานการณ์) ฉันกำลังลบส่วนที่ไม่ถูกต้องนี้ออกจากคำตอบของฉันในขณะที่คุณกำลังพิมพ์
Pascal Thivent

นอกจากนี้ยังยากที่จะบอกว่า V ของคุณเป็นทุนหรือไม่ ... ฉันขอแนะนำให้พูด [Shift] + [V] สำหรับการเลือกโหมดไลน์
Ben Voigt

ฉันรู้ว่ามันรับในขณะที่ แต่ทำไมใช้h, j, kและlจะเป็นมากมีประสิทธิภาพมากขึ้นกว่าการใช้ลูกศร? ฉันไม่เห็นปัญหาเมื่อใช้ลูกศรและผลลัพธ์สุดท้ายก็เหมือนเดิม นอกจากนี้ลูกศรยังได้รับการออกแบบมาเพื่อจุดประสงค์นั้นเป็นครั้งแรกดังนั้นการจัดเรียงของพวกเขาจึงรู้สึกง่ายขึ้นมาก (อย่างน้อยสำหรับฉัน)
Frederico Pantuzza

1
@FredericoPantuzza มันเป็นเรื่องของการเคลื่อนไหวของแขน ณ จุดนั้น - เป้าหมายคือให้นิ้วของคุณอยู่บนแป้นแถวบ้านตลอดเวลา ต้องยกแขนขวาขึ้นแล้วเลื่อนไปที่ปุ่มลูกศรเพื่อใช้งานจะเพิ่มขึ้นเมื่อเวลาผ่านไป
AndrewF

59

ทำด้วยวิธี vi

หากต้องการลบ 5 บรรทัดให้กด: 5dd(5 ลบ)

หากต้องการเลือก (คัดลอกไปยังคลิปบอร์ด) ให้พิมพ์: 10yy

มันยากที่จะเข้าใจ แต่มีประโยชน์มากในการเรียนรู้เมื่อใช้เทอร์มินัลระยะไกลเหล่านั้น

ระวังเส้นโค้งการเรียนรู้สำหรับบรรณาธิการบางคน:


(ที่มา: calver ที่ unix.rulez.org )


31

หากคุณต้องการลบโดยใช้หมายเลขบรรทัดคุณสามารถใช้:

:startingline, last line d

ตัวอย่าง:

:7,20 d

ตัวอย่างนี้จะลบบรรทัดที่ 7 ถึง 20


ฉันยังไม่ทราบเคล็ดลับนี้เลย ใช้งานได้เหมือนมีเสน่ห์! ขอบคุณ!
ตุง

13

การไฮไลต์ด้วยเมาส์จะเน้นเฉพาะอักขระบนเทอร์มินัลเท่านั้น VI ไม่ได้รับข้อมูลนี้จริงๆดังนั้นคุณต้องเน้นให้แตกต่างกัน

กด 'v' เพื่อเข้าสู่โหมดเลือกและใช้ปุ่มลูกศรเพื่อเลื่อนไปรอบ ๆ หากต้องการลบให้กด x ในการเลือกทีละบรรทัดให้กด shift + v ในการเลือกบล็อกให้ลอง ctrl + v นั่นเป็นสิ่งที่ดีสำหรับการพูดแทรกบรรทัดความคิดเห็นจำนวนมากไว้ด้านหน้าโค้ดของคุณ :)

ฉันสบายดีกับ VI แต่ฉันต้องใช้เวลาสักพักในการปรับปรุง เพื่อนร่วมงานของผมแนะนำแผ่นโกงนี้ ฉันเก็บภาพพิมพ์ไว้บนผนังสำหรับช่วงเวลาแปลก ๆ เมื่อฉันลืมอะไรบางอย่าง

แฮ็คแฮ็ค!


6

เมื่อใช้เทอร์มินัลเช่นPuTTYโดยปกติแล้วการคลิกเมาส์และการเลือกจะไม่ถูกส่งไปยังระบบระยะไกล ดังนั้น vi จึงไม่รู้ว่าคุณเพิ่งเลือกข้อความบางส่วน (มีข้อยกเว้นสำหรับสิ่งนี้ แต่โดยทั่วไปแล้วการทำงานของเมาส์จะไม่ถูกส่ง)

หากต้องการลบหลายบรรทัดใน vi ให้ใช้บางอย่างเช่น5ddลบ 5 บรรทัด

หากคุณไม่ได้ใช้Vimฉันขอแนะนำให้ทำเช่นนั้น คุณสามารถใช้การเลือกภาพซึ่งคุณกดVเพื่อเริ่มบล็อกภาพเลื่อนเคอร์เซอร์ไปอีกด้านหนึ่งแล้วกดdเพื่อลบ (หรือคำสั่งแก้ไขอื่น ๆ เช่นyเพื่อคัดลอก)


1
@ จัสตินแอล: ใช้<kbd>a</kbd>.
Greg Hewgill

1
ขอบคุณ! : D มีสิ่งเหล่านี้ซ่อนอยู่ที่ไหนสักแห่งอีกหรือไม่?
Justin L.

1
Putty สามารถส่งคำสั่งเมาส์ ประโยคแรกอาจล้าสมัย
Congusbongus

3

หากคุณต้องการลบบรรทัดทั้งหมดในไฟล์ออกจากหมายเลขบรรทัดปัจจุบันของคุณให้ใช้dGมันจะลบบรรทัดทั้งหมด(shift g)หมายถึงจุดสิ้นสุดของไฟล์

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