我想制作一个自定义的单键 Vim 映射,它既可以用来开始将宏录制到未命名的寄存器(q"
),也可以用来停止录制宏(q
)。
如果 Vim 处于录制模式,我可以从 Vim 脚本中检测到吗?
如果检测录音模式是可能的,如果我的功能在录音模式下被唤起(停止录音)会有什么问题吗?我的意思是,函数调用会被记录在宏中吗?
好吧,我不建议这样做,因为开始录制只需两次按键,您可以灵活地选择寄存器。
也就是说,这就是你如何做到的。我不知道直接检测录制模式的方法,但您可以创建一个映射,在每次按键时重新映射自身,从而在开始和停止录制之间交替:
" Helper mappings
nnoremap @{ :nmap ; @}<CR>qq
nnoremap @} q:nmap ; @{<CR>
" Toggle recording
nmap ; @{
" Playback
nnoremap , @q
选择最适合您的映射键。
另外,我不建议使用"
录音寄存器:它太容易被覆盖。
您可以只使用映射到q"<esc>
. 假设您仅在处于正常模式(并且insertmode
未设置)时才开始录制,这正是您想要的。