我在vim中使用了这个非常有用的快捷方式:
nmap <space> i <esc>r
这意味着如果我按 space f ,它将在给定位置插入一个字符f
。
然而,不幸的是,这不是原子的,即,如果我按 space f 然后导航到其他地方,则按。,我得到相当于 r f ,而不是 space f 。
这一切都有道理,但问题是:有没有办法制作这个原子,所以。会重复'插入字符'操作,所以撤消等都将它视为一个操作呢?
答案 0 :(得分:11)
真棒!迈克尔的回答向我指出了我需要完成插件的插件,它现在可以做你想做的事了 - 我一直试图弄清楚如何做这个年龄!
2)安装my plugin
3)添加映射到.vimrc
:
nnoremap <space> :<C-U>call InsertChar#insert(v:count1)<CR>
答案 1 :(得分:7)
这对你有用吗?
noremap <silent> <space> :exe "normal i".nr2char(getchar())<CR>
答案 2 :(得分:3)
您可能想看一下这个插件脚本。您可以配置地图以便支持它。阅读支持文档
答案 3 :(得分:2)
很抱歉,我无法为您的问题提供具体的答案,但我会注意到,当我必须重现相当多的命令时,我倾向于使用。键(例如我想插入 f 5次或更多次。)
如果是这种情况,我认为保存使用宏是不值得的。您可以使用宏而不是 i f esc 来保存一次击键,并且该操作是原子,这样您就可以了。到你心里。
如果我知道我想重复一遍,我会使用非宏版本。
P.S。你知道我开始喜欢&lt; kbd&gt;标签相当多: - )
答案 4 :(得分:-1)
nmap <Space> xPpr
正如这些人所建议的那样:
http://objectmix.com/editors/148791-vim-command-insert-single-character-return-normal-mode.html