如何在Vim中快速引用/取消引用单词并更改引用(例如从“到”)?我知道环绕的事。vim插件,但我想只使用vim。


当前回答

用引号括住所有单词:

s/\(\w\+\)/"\1"/g

之前:

aaa,bbb,ccc

后:

"aaa","bbb","ccc"

其他回答

用单引号括起来(例如)ciw'<C-r>"'<esc>可以,但重复就不行。试一试:

ciw'<C-r><C-o>"'<esc>

这将默认寄存器的内容“逐字”放置。现在你可以按了。任何一个词都要加引号。要了解更多信息,请参阅:h[elp] i_ctrl-r和关于:h text-objects文本对象的更多信息

来源:http://vimcasts.org/episodes/pasting-from-insert-mode/

我在我的。vimrc中使用nnoremap

单引用一个词:

nnoremap sq :silent! normal mpea'<Esc>bi'<Esc>`pl

删除双引号(也适用于双引号):

nnoremap qs :silent! normal mpeld bhd `ph<CR>

记住规则:'sq' =单引号。

我使用的是vim-surround命令,本质上几乎是vim。

环绕。vim都是关于“环境”的:圆括号、括号、引号、XML标记等等。该插件提供了映射,可以轻松地成对删除、更改和添加这样的环境。

Plugin 'tpope/vim-surround' 

例如,要完全删除分隔符,请按ds”。 详情如下: https://github.com/tpope/vim-surround

这里有一些简单的映射,可以用来引用和取消引用一个单词:

" 'quote' a word
nnoremap qw :silent! normal mpea'<Esc>bi'<Esc>`pl
" double "quote" a word
nnoremap qd :silent! normal mpea"<Esc>bi"<Esc>`pl
" remove quotes from a word
nnoremap wq :silent! normal mpeld bhd `ph<CR>

除了其他命令外,这将把一行中的所有单词用双引号括起来(根据您的注释)。

:s/\(\S\+\)/"\1"/

或者如果你想减少反斜杠的数量,你可以在模式的开头放一个\v(非常神奇的)修饰符

:s/\v(\S+)/"\1"/