Terminal Friday: Thinking Vim [เคล็ดลับ]

ขออภัยสำหรับความผิดพลาดในการสะกด Gif ที่ฉันเขียนเร็วมาก

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

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

$วิมติวเตอร์

เพื่อไม่ให้เป็นการเสียเวลา เราจึงเริ่ม 

มาโครใน VIM

มันอาจไม่ใช่หนึ่งในความลึกลับที่ยิ่งใหญ่ของ vim แต่เป็นการดีที่จะรู้ว่า vim มีการรองรับมาโครจึงเป็นไปได้ที่จะจัดเก็บมาโครจาก a ไปยัง z ; ในการเริ่มบันทึกคุณจะต้องกดเท่านั้น q+จดหมาย เรากดเพื่อหยุดการบันทึก q และในการเรียกใช้มาโครมันเป็นสิ่งที่ต้องการ จำนวน+@+จดหมาย.

ที่อยู่:
จดหมาย: เป็นกุญแจสำคัญของไฟล์ a ไปยัง z.
จำนวน: เป็นจำนวนครั้งที่เราจะกระทำซ้ำ

สิ่งนี้จะอำนวยความสะดวกในการทำงานซ้ำ ๆ ตัวอย่างเช่น; สมมติว่าเรามีบรรทัดเหล่านี้:

หนึ่งตัวอย่างหนึ่งสองตัวอย่างสองสามตัวอย่างสามสี่ตัวอย่างสี่ห้าตัวอย่างห้า

เราต้องการให้รูปแบบนี้:

'one': 'ตัวอย่าง' 'one'; 'สอง': 'ตัวอย่าง' 'สอง'; 'สาม': 'ตัวอย่าง' 'สาม'; 'สี่': 'ตัวอย่าง' 'สี่'; 'ห้า': 'ตัวอย่าง' 'ห้า';

นี่คือจุดที่มาโครทำให้ทุกอย่างง่ายขึ้นสำหรับเรา

เสียงเรียกเข้า

ลำดับที่ใช้:

qa ฉัน '[Esc] ea': [Esc] wi '[Esc] ea' [Esc] wi '[Esc] A'; [Esc] 0j q

จากนั้นวางเคอร์เซอร์บนเส้นเพื่อเปลี่ยนและใช้ จำนวน+@+จดหมาย ในกรณีนี้ฉันใช้ 4+@+a

แทนที่

เครื่องมือที่สำคัญมากใน Vim คือการแทนที่เนื่องจากเราอยู่ในโหมด Vim Normal โดยการกด Esc ต่อมาเรากด : และเราเขียนคำสั่ง ฉันพูดคำสั่งเพราะไม่ จำกัด เฉพาะการทดแทน คล้ายกันมากกับ RegEx
Ejemplos:

สิ่งที่พบบ่อยที่สุดในการเปลี่ยนสตริงอักขระทั่วทั้งเอกสาร:

เทอร์มินอล2

คำสั่ง:

:% s / vim / Vim / g

แทนที่เป็นกลุ่มทั้งหมดโดยเป็นกลุ่ม ทราบ: ถ้าฉันไม่มีเครื่องหมาย % ฉันจะค้นหาเฉพาะบรรทัดที่คุณอยู่

แทนที่ระหว่างช่วงหนึ่งระหว่างบรรทัดที่ 3,5:

เทอร์มินอล3

คำสั่ง:

: 3,5 วินาที / Vim / VIM / g

จากบรรทัดที่ 3 ถึง 5 แทนที่ Vim ด้วย VIM

โปรดทราบว่าไม่มี g ในตอนท้ายจะแก้ไขเฉพาะคำแรกที่ตรงกันเท่านั้น

เทอร์มินอล4

คำสั่ง:

: 3,5 วินาที / Vim / VIM

ด้วยบรรทัดนี้เราจะกำจัดบรรทัดทั้งหมดที่มีไฟล์ #

เทอร์มินอล5

คำสั่ง:

:., $ g / # / d

ของบรรทัดปัจจุบัน . จนจบเอกสาร $ มองหาตัวเลข # และลบออก d

คำสั่งเรียงลำดับส่วนไฟล์

เทอร์มินอล6

คำสั่ง:

: 3, $ sort

จากบรรทัดที่ 3 ไปยังจุดสิ้นสุดของเอกสารเรียงลำดับ

คำสั่งอื่น ๆ

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

เทอร์มินอล7


คำสั่งตามลำดับที่ปรากฏ:

#Date :: r! Date #Date with format :: r! Date + \% D #List directory :: r! ls Documents

ฉันใช้คำสั่งทั่วไป แต่ vim ใช้ผลลัพธ์ของคำสั่งใด ๆ และแทรกเป็นข้อความในเอกสาร

และนี่เป็นเพียงส่วนเล็ก ๆ เท่านั้นยังมีอีก ... และสิ่งที่ฉันไม่รู้ฮ่า ๆ ๆ ๆ

การเลือก

สุดท้าย แต่ไม่ท้ายสุดคือสถานะภาพที่เราสามารถเลือกเส้นเพื่อจัดการได้อย่างง่ายดาย การเลือกภาพมีสามประเภท

v แสดงภาพตามตัวอักษร
V ภาพตามเส้น
ควบคุม+v ภาพโดยบล็อก

เลือกสิ่งที่อยู่ในวงเล็บ:
v% หากคุณอยู่ที่จุดเริ่มต้น / จุดสิ้นสุดของวงเล็บ
vib หากคุณอยู่ในวงเล็บ

เทอร์มินอล8

เลือกสิ่งที่อยู่ในเครื่องหมายคำพูดคู่หรือเดี่ยว:
vi' เลือกคำพูดเดี่ยว
vi" เลือกเครื่องหมายคำพูดคู่

เทอร์มินอล9

viB เลือกทุกอย่างที่อยู่ในคีย์

เทอร์มินอล10

เลือกตามบรรทัด

ggVG เลือกทั้งเอกสาร

เทอร์มินอล11

นี่คือโดยทั่วไป gg ไปเริ่มต้น; ป้อนตัวเลือกภาพ V; และไปที่จุดสิ้นสุด G.

เลือกตามบล็อก

ควบคุม+v

เทอร์มินอล12

[ควบคุม] v e5j C [เขียนข้อความ] [esc] [esc]

และในสิ่งนี้คุณจะป้อนตัวเลือกภาพโดยบล็อก ควบคุมv, ฉันเลื่อนไปที่จุดสิ้นสุดของคำและ 5 บรรทัดลง 5j, ฉันลบคำด้วย C ฉันเขียนข้อความเพื่อแทนที่และกด Esc Esc.

อีกอันก็เหมือนกัน แต่แทนที่จะเป็น c มันเหมือนกับลบและเข้าสู่โหมดแทรก ฉันใช้ i เข้าสู่โหมดแทรก I ที่ตัวชี้อยู่

ทั้งหมดนี้ที่ผมอธิบายอาจจะดูลึกลับหรือคล้าย ๆ กับ vim ninja ฮ่า ๆ ๆ แต่มันไม่มีอะไรที่ไม่มีใน vim manual Vim มีเอกสารที่ดีที่สุดเล่มหนึ่งที่ฉันรู้จัก ในการป้อนเอกสารเพียงแค่ใส่

: ช่วยด้วย

หากคุณต้องการบางสิ่งบางอย่างที่เฉพาะเจาะจง

: help: w

สิ่งนี้จะนำคุณไปยังส่วนที่พูดถึง: w บันทึก.

ตอนนี้ใช่แล้ว... ชาว Vim ที่มีความสุข