6

我想制作一个自定义的单键 Vim 映射,它既可以用来开始将宏录制到未命名的寄存器(q"),也可以用来停止录制宏(q)。

如果 Vim 处于录制模式,我可以从 Vim 脚本中检测到吗?

如果检测录音模式是可能的,如果我的功能在录音模式下被唤起(停止录音)会有什么问题吗?我的意思是,函数调用会被记录在宏中吗?

4

2 回答 2

1

好吧,我不建议这样做,因为开始录制只需两次按键,您可以灵活地选择寄存器。

也就是说,这就是你如何做到的。我不知道直接检测录制模式的方法,但您可以创建一个映射,在每次按键时重新映射自身,从而在开始和停止录制之间交替:

" Helper mappings
nnoremap @{ :nmap ; @}<CR>qq
nnoremap @} q:nmap ; @{<CR>

" Toggle recording
nmap ; @{

" Playback
nnoremap , @q

选择最适合您的映射键。

另外,我不建议使用"录音寄存器:它太容易被覆盖。

于 2016-06-01T23:50:00.147 回答
0

您可以只使用映射到q"<esc>. 假设您仅在处于正常模式(并且insertmode未设置)时才开始录制,这正是您想要的。

于 2016-06-01T18:50:07.207 回答