vim - 如何使用 let 保存包含多个命令的宏?

标签 vim

我目前正在学习用 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”太难打字,您可以额外定义一个按键映射,以节省几次击键。

此外,您可能应该修改您的脚本以使用参数,并摆脱“另存为”以支持简单的“更新”,等等。

关于vim - 如何使用 let 保存包含多个命令的宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57454486/

相关文章:

vim - vim如何映射两个命令

vim - 在 Vim 中第二次调用 `:ls` 需要先清除命令

vim:如何映射 <F5> 以在光标所在的当前单词前面添加时间戳?

git - 我无法让 Git 在 DOS SHELL 中使用 Vim——它说 "cannot run sh"

vim - 如何在vim中打开光标下的目录?类似于 gf 的目录

sql - dbext 似乎认为 ( 是一个sql语句终止符

vim - 加快 VIM 光标在 j/k 上的移动速度

Vim Fugitive 从:Glog返回

vim - 有没有一种方法可以在VIM中环绕窗口导航

linux - Vim - 自动打开关闭括号和移动光标