我真的很喜欢vim的录音功能,但有时我需要“永久”录音。我不想每次都定义完全相同的录音。相反,我正在寻找一种解决方案,例如“将录音(!)保存到.vimrc文件中,以便每次打开 vim 时都会加载它”。类似的事情。是否可以?
录音保存在寄存器中,而寄存器通常在~/.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 中以一种或另一种方式覆盖,因此您必须在这里做出妥协。
看看我的这个要点。