คุณสมบัติ Vim ใดบ้างที่คุณใช้? [ปิด]


13

ฉันใช้เวลาเกือบทุกวันในการเขียนโปรแกรมVimและฉันมั่นใจว่าคุณก็ทำเช่นกัน คุณใช้ฟีเจอร์อะไรที่ทำให้การเข้ารหัสแบบวันต่อวันดีขึ้นมาก? หนึ่งที่ฉันใช้คือgvซึ่งจะช่วยให้คุณสามารถเลือกข้อความที่เลือกก่อนหน้านี้อีกครั้ง เหมาะสำหรับการกลับใจใหม่!


1
เพื่อจุดประสงค์ทางประวัติศาสตร์ต่อไปนี้เป็นลิงก์ไปยังคำถาม SO ดั้งเดิม: stackoverflow.com/questions/95072/…
Jax

หมายเหตุ: gvความคิดเห็นของฉันด้านล่างและคุณจะไม่ได้มีการประเภท :)
นาธานลอง

คำตอบ:


9

:% s / x / y / g

คำสั่งนี้แทนทุกกรณีของxในแฟ้มปัจจุบันด้วยY นี้นั้นเป็นเพียงการค้นหาและแทนที่ แต่ฉันจะใช้มันเพื่อให้บ่อยตั้งแต่ฉันได้เรียนรู้ในที่ทำงานว่ามันได้กลายเป็นสิ่งล้ำค่า

นอกจากนี้ / สตริงการค้นหา

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


ฉันกำลังทำงานเพื่อแปลงส่วนที่ใหญ่โตของโค๊ดเบสของเราในที่ทำงานและฉันทำมันด้วยนิพจน์ปกติที่เป็นกลุ่ม (จนถึงตอนนี้) มันใช้งานได้ดีจริงๆ!
Frew Schmidt

เพิ่ม 'c' ต่อท้ายเพื่อให้คำสั่งโต้ตอบได้ เช่น:% s / x / y / gc
sml

1
โปรดทราบว่า%ที่ที่จะทำการทดแทน - %หมายถึง "ไฟล์ปัจจุบัน" หากคุณเน้นบางบรรทัดและประเภทที่มองเห็น:sคุณสามารถทำการทดแทนได้ในการเลือกนั้น
นาธานลอง

7

== ทำการเยื้องอัตโนมัติที่ดีในบรรทัดปัจจุบัน

แต่โดยทั่วไปแล้วฉันใช้=กับการเคลื่อนไหวเช่น=Gเยื้องไปยังจุดสิ้นสุดของไฟล์หรือ=i}เยื้องในชุดของวงเล็บปีกกาปัจจุบัน


2
นอกจากนี้โปรดจำไว้ >> และ << ซึ่งสามารถทำ (ยกเลิก) เยื้องได้ด้วยตนเอง
Frew Schmidt

@Frew - อ๋อ นอกจากนี้หากคุณเพิ่มvmap <Tab> >gvและเพิ่มลงvmap <S-Tab> <gvใน.vimrcคุณสามารถเยื้องและรวมเข้ากับแท็บและ Shift-Tab ตามลำดับและมันจะย้อนกลับไปที่โหมดการเลือกภาพเพื่อให้คุณสามารถเยื้องหรือเยื้องออกไปอีก
นาธานลอง

6

=% สำหรับการเยื้องอัตโนมัติทุกอย่างภายในบล็อกของรหัส


โอ้! นั่นเป็นเรื่องใหม่สำหรับฉัน!
Frew Schmidt

{ที่ทำงานถ้าเคอร์เซอร์ของคุณอยู่ในจุดเริ่มต้น หากคุณอยู่ในบล็อกคุณสามารถทำได้=i{สำหรับ "เยื้องในวงเล็บปีกกา"
นาธานลอง

5

ใช้*ในโหมดคำสั่งเพื่อค้นหาคำที่อยู่ใต้เคอร์เซอร์


1
และอย่าลืมว่ามันเป็นคำสั่ง sister # ซึ่งทำสิ่งเดียวกัน แต่ย้อนกลับไปข้างหน้าแทนที่จะส่งต่อ!
Frew Schmidt

5

:!คำสั่ง - ที่ทรงคุณค่าสำหรับlsไอเอ็นจีและ "sudo ที" เคล็ดลับ

ฉันถูกขอให้อธิบายเคล็ดลับที โดยทั่วไปจะช่วยให้คุณสามารถบันทึกไฟล์ข้อความด้วย admin priveleges แม้ว่าคุณจะไม่ได้เริ่ม VIM ในฐานะรูท:

:w !sudo tee %

คุณอาจต้องการอธิบายกลอุบาย "sudo tee" ในที่นี่ :-) และฉันต้องการทำ:! เรียงลำดับหลังจากเน้นความหมายของตัวแปรและอะไร
Frew Schmidt

คุณสามารถเปลี่ยน Vim ให้กลายเป็น "scriptable" editor ที่ยอดเยี่ยมโดยใช้:! และบางสคริปต์เชลล์ / Python / Perl / อื่น ๆ
Jonas

จริง ๆ แล้วฉันมีทางเลือก!lsซึ่งทำงาน a vnewส่งออกr!lsไปยังบัฟเฟอร์ใหม่และลดขนาดในแนวนอน ฉันไม่ใส่ใจที่จะจำไฟล์ทั้งหมดในไดเรกทอรีที่มีมากกว่าสามไฟล์ในนั้น)
new123456

4
.

กดปุ่ม คีย์ทำซ้ำคำสั่งก่อนหน้า น่ารักพูดพูดแก้ไข.iniหรืออื่น ๆ


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


2

ฉันมักจะใช้gqเพื่อแบ่งบรรทัดในอีเมลไฟล์ข้อความ ฯลฯ มีประโยชน์จริง ๆ เมื่อตอบกลับอีเมล (ฉันใช้ต้นสน) และแก้ไขการตอบกลับก่อนหน้าหลายรายการ


โอ้ฉันจะลืมเรื่องนี้ไปโดยสิ้นเชิง!
Frew Schmidt

เหตุใดจึงเป็นเช่นนั้นไคลเอนต์อีเมลที่ได้รับความนิยมไม่สามารถรองรับฟังก์ชั่นที่คล้ายกันได้หรือไม่
erichui

เมื่อเร็ว ๆ นี้ฉันใช้ gw แทน gq เพราะมันคงตำแหน่งเคอร์เซอร์ไว้
SergioAraujo

2

จะเริ่มที่ไหน ... นี่คือสิ่งที่ฉันจำได้ว่าฉันเคยใช้ใน 5 นาทีที่ผ่านมา

  • NERD Tree - สำรวจไฟล์ ทำให้ VIM เป็นเหมือน IDE มากขึ้น
    • สิ่งหนึ่งที่ยิ่งใหญ่สำหรับฉันคือความสามารถในcdการไดเรกทอรีและจากนั้นปล่อยให้เชลล์พร้อมท์ผ่านการแมปเชลล์ของฉัน (ด้านล่าง)
  • ci สำหรับล้างสิ่งที่คุณติดอยู่ระหว่าง
  • :! สำหรับการเปิดใช้แอปมาตรฐาน
    • ฉันมีการแม็พเพื่อเรียกใช้เชลล์พรอมต์ไคลเอนต์ mysql ไฟล์บันทึก apache และอื่น ๆ
    • การรวมการโค่นล้มเป็นสิ่งที่ดีเสมอ Quick diffs, stats, เป็นต้น
  • :abbr สำหรับการพิมพ์ซ้ำของบล็อกขนาดใหญ่หายไป
  • แท็บ ฉันต้องการพูดอีกหรือไม่
  • แยกไฟล์ได้ดีเสมอ :Sexดีอยู่เสมอ
  • :set paste! เพื่อป้องกันมิให้มีการเยื้องอัตโนมัติ

ฉันใช้สิ่งเหล่านี้ทั้งหมดยกเว้น abbr ฉันมักจะทำมาโครได้มากกว่าตัวย่อ
Frew Schmidt


1

ฉันใช้คำสั่งต่อไปนี้อย่างหนักขณะเขียนหรือสำรวจรหัส C / Tcl / Perl:

รหัสคัดลอกวาง

CTRL-fและCTRL-bสำหรับหน้าไปข้างหน้าและย้อนกลับการสำรวจเส้นทาง
%สำหรับบล็อก traversal ข้ามบล็อก
^ เริ่มต้นของบรรทัดไปที่
$ ปลายสุดของบรรทัด

เริ่มต้นเลือกรหัสโดยใช้คำสั่งv(โหมดภาพ) และปุ่มลัดใด ๆ ข้างต้น
yเพื่อคัดลอก
pเพื่อวาง

s เพื่อลบอักขระและโหมดแทรกข้ามไปเพื่อพิมพ์ข้อความใหม่

การสำรวจเส้นทางระดับรหัส (ต้องมีวินัยในการเข้ารหัสสไตล์)

]]สำหรับการเริ่มฟังก์ชั่นถัดไป
[[สำหรับการเริ่มฟังก์ชั่นก่อนหน้า

CTRL-] เพื่อข้ามไปยังนิยามของตัวแปร / ฟังก์ชั่น / มาโครหากมีแท็ก

ค้นหา

* => คำค้นหา (หรือข้อความที่เลือกโดยใช้ v) ในทิศทางไปข้างหน้า
# => คำค้นหา (หรือข้อความที่เลือกโดยใช้ v) ในทิศทางย้อนกลับ
n => ดำเนินการคำสั่งค้นหาก่อนหน้าในทิศทางไปข้างหน้า
N => ดำเนินการคำสั่งค้นหาก่อนหน้าในทิศทางย้อนหลัง

คำสั่งข้างต้นทั้งหมดสามารถเติมด้วยตัวเลขเพื่อแสดงว่ากี่ครั้งในการดำเนินการ การตระหนักถึงพลังของมิติเพิ่มเติมนี้เกิดขึ้นอย่างช้าๆเมื่อผู้ใช้ใช้กลุ่มมากขึ้นเรื่อย ๆ และท้าทายตัวเองในการปรับปรุง


อา,]] และ [[ยังใหม่สำหรับฉัน เยี่ยมมาก!
Frew Schmidt


0

ฉันเคยเป็นผู้ใช้ TextPad มาก่อนและได้จดจำคีย์การเร่งความเร็วของโปรแกรมจำนวนมาก หนึ่งในสิ่งแรกที่ฉันทำใน Vim คือการเรียนรู้ฟังก์ชั่นแผนที่เพื่อให้สอดคล้องกัน (การค้นหา F5, F8 แทนที่เป็นต้น) ฉันสร้าง colorcheme ส่วนตัวของฉันและยืมไฟล์ vimrc จากคนอื่นมามาก Viva Vim! กำหนดระดับใดก็ได้

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