假设我的源代码文件名是“foo.c”。在编辑和调试时,我总是执行以下命令:-
:!gcc -g foo.c -o foo;gdb foo
我可以向 Vim 添加自定义命令,这样如果我输入“:debug”,上面的命令就会执行吗?我该如何实现?
答案1
是的。Vim 文档,第 40.2 节,命令行映射:
Vim 编辑器允许您定义自己的命令。您可以像执行任何其他命令行模式命令一样执行这些命令。要定义命令,请使用“:command”命令,如下所示:
:命令 DeleteFirst 1删除
现在,当你执行命令“:DeleteFirst”时,Vim 会执行“:1delete”,删除第一行。
注意:用户定义的命令必须以大写字母开头。您不能使用“:X”、“:Next”和“:Print”。不能使用下划线!您可以使用数字,但不建议这样做。
把那一行放入你的~/.vimrc
(当然不包括首字母:
) 中,每次启动 vim 时它都会被定义。此外,使用%:t
来引用正在编辑的文件 (写入! gcc %:t
被替换为! gcc foo.c
)。
如果你只希望为一个文件或某些文件定义它,那么你需要一个自动命令。
答案2
Vim 已经支持Makefile 文件(:make)。如果您为源代码创建一个,您可以在其中指定要执行的操作。此外,通过 ctags,Vim 将能够遍历编译期间发现的任何错误。
答案3
添加用户定义的 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
~/legend_header.txt
第二步:在光标位置添加的内容。
答案4
我在 .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
您可以确定可执行文件的名称将是没有 .c 扩展名的源名称。