在我的vimrc文件中,我有以下条目用'+'包围一个单词:
:nnoremap <silent> q+ wbi+<ESC>ea+<Esc>
我想将其更改为用任何其他符号包围一个单词,例如引用,但我不想使用其他插件或插入另一个地图。我希望在我的vimrc中有这样的东西:
:nnoremap <silent> qX wbiX<ESC>eaX<Esc>
其中X将是围绕该词放置的角色。
如何在VIM中完成?
由于
答案 0 :(得分:4)
总体思路:
:nnoremap q :let c=nr2char(getchar())\|:exec "normal wbi".c."\eea".c."\e"<CR>
但我不认为q
是一个不错的选择,特别是对于带引号的示例,因为q
从vim启动extremely handy recording feature。普通q
命令也可以预期第二个字符(记录目标寄存器),它实际上可以是"
。当您在另一台计算机上或其他人使用您的vim时,这对您来说会非常混乱。对于q
,您应该preprend a leader。有领导者:
:nnoremap <leader>q :let c=nr2char(getchar())\|:exec "normal wbi".c."\eea".c."\e"<CR>
默认的领导者值为\
,但可以更改此值。请注意,必须在定义映射之前更改它。您可以使用let mapleader
查看当前配置的领导者(如果未配置领导者,则会打印错误消息)。有了这些陈述,
:let mapleader=','
:nnoremap <leader>q :let c=nr2char(getchar())\|:exec "normal wbi".c."\eea".c."\e"<CR>
您可以使用,q+
和+
键入,q"
以围绕您的字词,以便用"
包围您的字词。
顺便说一句:如果你的光标在线上的最后一个字符,你的映射就不起作用了。将映射更改为:
:nnoremap <leader>q :let c=nr2char(getchar())\|:exec "normal viwo\ei".c."\eea".c."\e"<CR>
答案 1 :(得分:1)