在Vim中插入单个字符进行原子操作

Pet*_*ter 19 vim

我在vim中长期使用这个非常有用的快捷方式:

nmap <space> i <esc>r
Run Code Online (Sandbox Code Playgroud)

这意味着,如果我按下spacef,例如,它将f在给定位置插入一个字符.

然而,不幸的是,这不是原子的,即,如果我按下spacef然后导航到其他地方,然后按.,我得到相当于rf,而不是spacef.

所有这些都是有道理的,但问题是:有没有办法制作这个原子,这样.就会重复'插入字符'操作,所以撤消等都将它视为一个操作呢?

too*_*php 11

真棒!迈克尔的回答向我指出了我需要完成插件的插件,它现在可以做你想要的 - 我一直在试图弄清楚如何做多年!

1)安装Tim Pope的插件

2)安装我的插件

3)添加映射到您的.vimrc:

nnoremap <space> :<C-U>call InsertChar#insert(v:count1)<CR>
Run Code Online (Sandbox Code Playgroud)


Max*_*Kim 7

这对你有用吗?

noremap <silent> <space> :exe "normal i".nr2char(getchar())<CR>
Run Code Online (Sandbox Code Playgroud)

  • 如果你做快速插入,光标的缺乏不是那种消息. (2认同)
  • 这很棒!我使用了未绑定的`K`,使用相同的`i`手指,Kim以K开头.我相信这是原始开发者映射键的方式. (2认同)