【发布时间】:2011-01-02 17:24:27
【问题描述】:
有人知道如何正确保存/重用 vim 编辑器中记录的宏吗?
【问题讨论】:
有人知道如何正确保存/重用 vim 编辑器中记录的宏吗?
【问题讨论】:
使用q 后跟一个字母来录制宏。这只是进入复制/粘贴寄存器之一,因此您可以在正常模式下使用"xp 或"xP 命令正常粘贴它,其中 x 是要粘贴的寄存器。
要保存它,你打开 .vimrc 并粘贴内容,然后在你下次启动 vim 时该寄存器将在附近。
格式类似于:
let @q = 'macro contents'
不过,请注意引号。他们必须正确逃脱。
所以要保存一个宏,你可以这样做:
qq
q
"qp 将宏插入到您的 let @q = '...' 行中【讨论】:
CTRL-V <ESC> 插入正确的字符。文字 <ESC> 不起作用
Ctrl+r Ctrl+r registerName 输入寄存器内容而不解释它们 - 比 "qp 更好。不过,对于 in-vim 方法 +1。
:set expandtab 以便按 CTRL-V <TAB> 以插入实际的制表符.如需更强大的解决方案,您可以查看Marvim。
它允许您将宏保存在特定命名空间中(或使用文件类型作为默认命名空间),您可以稍后搜索已保存的宏并将它们加载到准备使用的寄存器中。
如果你重用了很多宏,这很有帮助。
【讨论】:
在你的 ~/.vimrc 中编写你的宏,例如定义一个由 CTRL+O 启动的宏,将以下行添加到你的 ~/.vimrc 中:
map <C-O> MACROTEXT
当您通过键入qa 录制宏时,您可以通过键入"ap 检索宏文本
【讨论】:
a 寄存器上的宏
:mkexrc(或:mkvimrc)命令可用于将所有当前:map 和:set 设置保存到文件中。详情请见:help mkexrc。
【讨论】:
你可以在你的 ~/.vimrc 上这样做
:let @a="iHello World!\<CR>bye\<Esc>"
注意:您必须使用双引号才能使用特殊键,例如 \<this silly example>。
【讨论】:
^[<80><fd>a,因此让我省去了很多麻烦,并且很难使用单引号使其工作。这种方法更简单/更容易,应该在文档中强调。
MacOS Mojave (10.14.6) 上的 Vim 8.0 实际上会自动保留宏和命名缓冲区(默认情况下,尽管我还没有寻找关闭此行为的方法)。关闭 Vim 会话将使用任何命名的缓冲区/宏更新 ~/.viminfo 文件。
【讨论】: