วิธีการเพิ่มคำสั่งในโปรแกรมแก้ไขเป็นกลุ่ม?


87

ถ้าสมมุติว่าชื่อไฟล์ซอร์สโค้ดของฉันคือ "foo.c" ในขณะที่การแก้ไขและการดีบักฉันรันคำสั่งนี้:

:! gcc -g foo.c -o foo; gdb foo

ฉันสามารถเพิ่มคำสั่งที่กำหนดเองเพื่อ Vim เช่นนั้นถ้าฉันพิมพ์ ": debug" แล้วคำสั่งดังกล่าวข้างต้นดำเนินการ? ฉันจะบรรลุสิ่งนั้นได้อย่างไร

คำตอบ:


103

ใช่. เอกสารที่เป็นกลุ่มส่วน 40.2 การแม็พบรรทัดคำสั่ง :

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

: คำสั่ง DeleteFirst 1delete

ตอนนี้เมื่อคุณรันคำสั่ง ": DeleteFirst" Vim execute ": 1delete" ซึ่งจะลบบรรทัดแรก

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

ใส่บรรทัดนั้นในของคุณ~/.vimrc(ลบด้วยค่า:เริ่มต้น) และมันจะถูกกำหนดทุกครั้งที่คุณเริ่มเป็นกลุ่ม นอกจากนี้ใช้%:tเพื่ออ้างอิงไฟล์ที่กำลังแก้ไข (การเขียน! gcc %:tจะถูกแทนที่ด้วย! gcc foo.c)

หากคุณต้องการกำหนดให้เฉพาะไฟล์เดียวหรือสำหรับไฟล์บางไฟล์คุณต้องมีคำสั่งอัตโนมัติ


4
command!ถ้าคุณจะเปลี่ยนคำสั่งที่มีอยู่คุณต้องใช้
phyatt

14

Vim ได้รองรับMakefiles (: make) แล้ว หากคุณสร้างขึ้นมาสำหรับแหล่งที่มาของคุณคุณสามารถระบุสิ่งที่คุณต้องการทำ นอกจากนี้ผ่าน ctags กลุ่มจะสามารถทำซ้ำผ่านข้อผิดพลาดใด ๆ ที่พบในระหว่างการรวบรวม


5

เพิ่มคำสั่งเอดิเตอร์ vi ที่ผู้ใช้กำหนด:

สิ่งนี้จะทำให้เมื่อผู้ใช้พิมพ์:Legendในโหมดปกติบล็อกข้อความจะถูกเพิ่มภายใต้เคอร์เซอร์

ขั้นตอนที่ 1: ใส่บรรทัดนี้เป็นไฟล์ชื่อ ~ / legend_header.txt`

this text will be added

ขั้นตอนที่ 2: ใส่คำสั่งนี้ลงในไฟล์ ~ / .vimrc ของคุณ (หากไฟล์ไม่มีอยู่ให้สร้างขึ้นมา):

"The following command puts the contents of ~/legend_header.txt 
"under the cursor when the user types ":Legend" in normal mode.
command Legend :r ~/legend_header.txt

ขั้นตอนที่ 3: รีสตาร์ท vi เพื่อให้การเปลี่ยนแปลงมีผล คุณทำเสร็จแล้ว

ทดสอบมัน

ขั้นตอนที่ 1: เปิดไฟล์ใหม่ใน vi อยู่ในโหมด "ปกติ" เริ่มต้นใน vi ชนิด:Legend

ขั้นตอนที่ 2: เนื้อหาของ~/legend_header.txtควรจะเพิ่มที่เคอร์เซอร์อยู่


0

ฉันใช้คำสั่งนี้ใน. vimrc ของฉันเพื่อรวบรวมและประมวลผลรหัส c:

:command Gcc !set $1 `echo "%" | sed 's/\.c//g'` ;gcc -o $1 "%" ; chmod o+x $1; $1

แต่สำหรับความต้องการของคุณคุณสามารถใส่:

:command Gdb !set $1 `echo "%" | sed 's/\.c//g'` ;gcc -o $1 "%" ; gdb $1

คุณสามารถมั่นใจได้ว่าชื่อของไฟล์ exec จะเป็นชื่อแหล่งที่มาโดยไม่มีนามสกุล. c

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