Vim映射到带有字符的环绕字

时间:2016-01-27 11:15:02

标签: vim

在我的vimrc文件中,我有以下条目用'+'包围一个单词:

:nnoremap <silent> q+ wbi+<ESC>ea+<Esc>

我想将其更改为用任何其他符号包围一个单词,例如引用,但我不想使用其他插件或插入另一个地图。我希望在我的vimrc中有这样的东西:

:nnoremap <silent> qX wbiX<ESC>eaX<Esc>

其中X将是围绕该词放置的角色。

如何在VIM中完成?

由于

2 个答案:

答案 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)

使用Tim Pope的surround.vim插件!

+符号包围一个单词:

ysiw+