可以在 vim 中创建“永久”录音吗?

mal*_*chi 3 vim

我真的很喜欢vim的录音功能,但有时我需要“永久”录音。我不想每次都定义完全相同的录音。相反,我正在寻找一种解决方案,例如“将录音(!)保存到.vimrc文件中,以便每次打开 vim 时都会加载它”。类似的事情。是否可以?

rom*_*inl 7

录音保存在寄存器中,而寄存器通常在~/.viminfo会话之间保存在文件中,因此这至少是开箱即用的一级永久性。

更永久的解决方案是将宏手动存储在您的vimrc

let @a = "lqhjdfgflqsdhjqsfgd"
Run Code Online (Sandbox Code Playgroud)

通常,该过程如下所示:

:e $MYVIMRC    " edit your vimrc
Go             " go to last line and open a new line below
let @a = "     " start typing
<C-r>a         " insert the content of the desired register
"              " insert closing quote
<Esc>          " leave insert mode
Run Code Online (Sandbox Code Playgroud)

但是录制的宏充满了奇怪的工件(例如<80>j等),您需要自己删除它们。

:help setreg()是做同样事情的另一种方法。

也就是说,这两种解决方案都有一个共同的缺陷:寄存器@a-z都是可写的。这意味着,即使可以在启动时设置寄存器,也无法阻止它在会话期间被覆盖。

另一种可能性是将宏保存为映射:

nnoremap <key> lqhjdfgflqsdhjqsfgd
Run Code Online (Sandbox Code Playgroud)

根据<key>您的选择,这可能不太容易被覆盖。

命令和/或函数也可能更安全。

最重要的是,所有“全局”内容都可以在 vimscript 中以一种或另一种方式覆盖,因此您必须在这里做出妥协。


看看我的这个要点