如何在vim编辑器中添加命令?


86

如果假设我的源代码文件名为“ foo.c”。在编辑和调试时,我总是执行以下命令:

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

我可以在Vim中添加一个自定义命令,以便如果我键入“:debug”然后执行上面的命令?我该如何实现?

Answers:


102

是。Vim文档,第40.2节,命令行映射

Vim编辑器使您可以定义自己的命令。您可以像执行任何其他命令行模式命令一样执行这些命令。要定义命令,请使用“:command”命令,如下所示:

:命令DeleteFirst 1删除

现在,当您执行命令“:DeleteFirst”时,Vim将执行“:1delete”,这将删除第一行。

注意:用户定义的命令必须以大写字母开头。您不能使用“:X”,“:Next”和“:Print”。下划线不能使用!您可以使用数字,但是不建议这样做。

将该行放入您的行中~/.vimrc:当然要减去初始行),并且每次启动vim时都会对其进行定义。另外,还可用于%:t引用正在编辑的文件(写入! gcc %:t将替换为! gcc foo.c)。

如果只希望为一个文件或某些文件定义它,则需要一个自动命令。


4
如果要替换现有命令,则需要使用command!
phyatt

14

Vim已经支持Makefiles(:make)。如果您为源创建一个,则可以在其中指定要执行的操作。同样,通过ctags,Vim将能够遍历编译期间发现的任何错误。


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扩展名的源名称。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.