題 如何在vim編輯器中添加命令?


假設我的源代碼文件名是“foo.c”。 在編輯和調試時,我總是執行以下命令: -

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

我可以向Vim添加一個自定義命令,這樣如果我輸入“:debug”,那麼上面的命令會執行嗎? 我如何實現這一目標?


73
2018-01-09 13:26


起源




答案:


是。 Vim文檔,第40.2節, 命令行映射

Vim編輯器使您可以定義   你自己的命令。你執行這些   命令就像其他命令一樣   命令行模式命令。至   定義一個命令,使用“:command”   命令,如下:

:命令DeleteFirst 1delete

現在執行命令時   “:DeleteFirst”Vim執行   “:1delete”,刪除第一個   線。

注意:用戶定義的命令必須   以大寫字母開頭。您   不能使用“:X”,“:下一步”和   “:打印”。下劃線不可能   用過的!你可以使用數字,但這個   氣餒。

把那條線放在你的 ~/.vimrc (減去初始 : 當然)並且每次啟動vim時都會定義它。另外,使用 %:t 引用正在編輯的文件(寫作 ! gcc %:t 被替換為 ! gcc foo.c)。

如果您只想為一個文件或某些文件定義它,您需要一個 自動命令。


88
2018-01-09 13:56



如果要替換現有命令,則需要使用 command!。 - phyatt


Vim已經有了支持 Makefile文件 (:使)。如果您為源創建一個,則可以在其中指定要執行的操作。此外,通過ctags,Vim將能夠迭代編譯期間發現的任何錯誤。


14
2018-01-09 13:48





添加用戶定義的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 應添加光標所在的位置。


4
2018-05-01 14:31





我在.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擴展名的源名稱。


0
2017-11-13 20:48