我怎样才能重复上次使用的修改(。)以及更多之前的修改?
完美的变体是通过Ctrl+N和Ctrl+选择它们P。
答案1
为了扩展@ldigas 关于记录和宏的评论,这里有一个简单的细分。
- 按下q进入“录音”模式。
- 按下您想要“命名”宏的键,我通常用于w一次性使用的宏,但您可以使用任何您想要的字母。
- 执行您想要重复的操作。
- 按下q停止录音。
一旦您有了宏,您就可以使用@w(假设您使用了w)重播它,它将滚动执行您记录的操作。
答案2
我不建议重新映射 CN 和 CP,因为它们是自动完成映射,插件经常使用它们。事实上,我不建议重新映射任何 vim 的默认映射。但无论如何,这取决于你。
至于重复,点 (.) 将重复您在上一行执行的操作。如果您在某些插件中使用重复命令时遇到问题,请尝试重复.vim插入。
如果您希望使用一些经常使用的操作,请尝试将其记录在寄存器中,然后播放它(“:help record”),或者使其成为一个函数,然后调用该函数(如果您愿意,我猜可以作为 CN 或 CP 调用函数...)
答案3
再次扩展对要重复的命令的映射:
当您无需视觉反馈就知道要重复的内容时,此 [ Ctrl- ]Space映射可节省另外几个击键:
" map in Normal and Visual modes, but not Select mode (see :help mapmode-x
:command -nargs=* Nxmap nmap <args>| xmap <args>
com -nargs=* Nxnoremap nnoremap <args>| xnoremap <args>
com -nargs=* Nxunmap nunmap <args>| xunmap <args>
" map <Space> to currently often-used operations (similar to space.vim)
" quickly create custom mappings
" Usage: <C-Space>YOURMAPPING<Enter> and then just <Space> for each repetition
" (When you know without visual feedback what you want to repeat, this saves another few keystrokes.)
Nxmap <C-Space> :Nxmap <lt>Space>
" make these commands repeatable by <Space> (similar to space.vim)
let space_repeats_nx = ['@@','@:']
for cmd in space_repeats_nx
exe 'Nxnoremap '.cmd.' :Nxnoremap <lt>Space> 'cmd.'<CR>'.cmd
endfor
答案4
我做了重复最后一步.vim插件来提供此功能5\.
它通过启用宏录制来工作每时每刻。因此我并不推荐它!但我发现这是唯一可以回顾性地执行多次重复的方法。如果 Vim 可以在内部提供对最近击键的访问,那就太好了。
q
最好记住在执行想要重复的操作之前先击打。