如果假设我的源代码文件名是“foo.c”。在编辑和调试时,我总是执行此命令:-
:!gcc -g foo.c -o foo;gdb foo
我可以向 Vim 添加一个自定义命令,以便如果我输入 ":debug" 那么上面的命令会执行吗?我如何做到这一点?
Jam*_*ley 130
是的。Vim 文档,第 40.2 节,命令行映射:
Vim 编辑器使您能够定义自己的命令。您可以像执行任何其他命令行模式命令一样执行这些命令。要定义命令,请使用 ":command" 命令,如下所示:
:command DeleteFirst 1delete
现在当你执行命令 ":DeleteFirst" 时,Vim 执行 ":1delete",它删除第一行。
注意:用户定义的命令必须以大写字母开头。你不能使用 ":X"、":Next" 和 ":Print"。不能使用下划线!您可以使用数字,但不鼓励这样做。
将该行放在您的~/.vimrc
(:
当然减去首字母)中,每次启动 vim 时都会定义它。此外,用于%:t
引用正在编辑的文件(写入! gcc %:t
被替换! gcc foo.c
)。
如果您只想为一个文件或某些文件定义它,您需要一个自动命令。
这将使当用户:Legend
在正常模式下键入时,在光标下添加一个文本块。
第 1 步:将此行放入名为 ~/legend_header.txt` 的文件中
this text will be added
Run Code Online (Sandbox Code Playgroud)
第 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
Run Code Online (Sandbox Code Playgroud)
第 3 步:重新启动 vi 以使更改生效。你完成了。
测试一下
步骤1:在vi中打开一个新文件。在 vi 中处于默认的“正常模式”。类型:Legend
第二步:~/legend_header.txt
在光标所在的地方加上的内容。