在 VIM 中的单词的开头和结尾添加一个字符

Adding a char to beginning and end of a word in VIM

'Enveloping' 给定字符中的单词或字符串是我在 VIM 中执行次数最多的操作之一。

最常见的字符组合(分别在开头和结尾添加):<>、()、''、""、**、__、-- 等...

在 VIM 中是否有执行此操作的本机方法?如果没有,我们如何为此设置宏?

围绕 具有给定字符对的单词的最“原生”方式是:

  1. 改成ciw字(字默认放入寄存器"),
  2. 插入开始字符,
  3. <C-r>",
  4. 插入寄存器"的内容
  5. 插入结束符,
  6. 使用 <Esc> 返回正常模式。

简而言之:

ciw(<C-r>")<Esc>

这是在不进行自定义映射或安装 Surround or Sandwich.

等插件的情况下可以获得的最高效方法

您可以创建一个函数来抽象所有 chang 内字:

if !exists('*AddSingleQuotes')
    function! AddSingleQuotes()
        exec "normal! ciw''\<Esc>P"
    endfunction
endif
nmap <Leader>q :call AddSingleQuotes()<CR>

同时修改添加双引号:

if !exists('*AddDoubleQuotes')
    function! AddDoubleQuotes()
        exec "normal! ciw\"\"\<Esc>P"
    endfunction
endif
nmap <Leader>q :call AddDoubleQuotes()<CR>

注意:if !exists 部分确保 vim 不会多次加载该函数,即使您重新加载 vimrc.