有没有办法插入单个字符然后退出插入模式?


10

当我浏览文本时,例如,在某些单词或引号周围加上反引号时,每次插入后必须按Esc或Ctrl- [会很烦人。插入内容(和附加内容)不同,因此.并没有太大帮助。

是否有任何类似的功能,r使单个字符后返回正常模式,但使用插入模式而不是替换模式?


3
您也许应该考虑使用(或扩展)vim-surround插件,以便以更有意义的方式处理文本。
VanLaser 2015年

Answers:


11

如果没有(我没看过),可以在您的中使用此映射.vimrc

nnoremap <C-I> i <ESC>r

i插入,放置空格,ESC猿并开始单个字母的r替换。这将映射到CtrlI

这是一种技巧,如果您在键入字母之前命中转义符,将留下一个空白—但是总比没有好!


1
不错...如果没有人提出更好的建议,我可能会用它。:)
通配符

2
@Wildcard我没有意识到我实际上有多少会遇到这个用例。好问题:)我也将其添加到自己的vimrc中。
Qix-蒙尼卡(Monica)

2
我整天的大部分时间都在整理一堆降价促销。斜体,内联代码,标题缩进,超链接...所有这些都插入一个字符。:)实际上,您的解决方案是完美的;我现在将开始使用它。
2015年

2
缺点:该.命令不可重复。:(
通配符

1
不幸的是,@ Wildcard经过大量研究后,.除非使用,否则无法为它创建手动重复分支repeat.vim
Qix-蒙尼卡(Monica)

0

要将char插入单词的末尾(而不是光标位置),请使用

nnoremap <C-a> a <ESC>r

该映射到Ctrl + a,您当然也可以映射到其他任何东西。

我只有两个,.vimrc所以我不忙很多:)

" Insert char at cursor position
nnoremap <C-i> i <ESC>r
" Append char after cursor position
nnoremap <C-a> a <ESC>r
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.