我目前正在学习用Vim编程,我决定制作一个宏来快速编译和运行C代码,所以我做了这样的:
save quickrun.c
!gcc quickrun.c -o quickrun
!quickrun
它按预期工作,没有问题,但后来我尝试将宏保存在 _vimrc 文件中,并且使用“let”仅使用一个命令保存其他宏没有任何问题,例如
let @a = '!gcc file.c'
但是我想保存所有3个命令以便在宏中编译和运行,我该怎么做?
将一系列命令永久地放入寄存器中是一个非常奇怪的想法。通常,人们使用寄存器通过从某个脚本中提取部分代码或通过使用 q
记录按键序列来动态构建命令。问题是你只有 26 个具有固定名称的插槽,这对于存储通用命令序列非常不方便。
更常见的解决方案是设置用户命令或映射(或两者)。您可以在 vimrc 中定义一个命令(必须以大写字母开头!),如下所示:
command! QRun save quickrun.c | !gcc quickrun.c -o quickrun | !quickrun
条形符号 (|) 是 Vim 脚本中的命令分隔符,即在交互模式下也允许使用。之后,您可以像执行其他命令一样执行命令:
:QRun
。如果您觉得“QRun”太难输入,您可以另外定义一个键映射以节省几次击键。
此外,您可能应该修改脚本以使用参数,并摆脱“另存[as]”以支持简单的“更新”,等等。
:!
,你需要以冒号开头。然后你就可以使用
|
:let @a = ":save ... | !gcc ... \<CR> !quickrun\<CR>"
更好的解决方案是映射:
nnoremap keys execute ":save ... <bar> !gcc ... <bar> !quickrun<CR>"
但是对于 C 代码,您通常可以只使用
:make