在 vim 中一次用引号括起几个单词

Surround Several Words With Quotes At Once In vim

我很好奇是否有一种方法可以使用 vim 将多个单词同时用引号括起来。我正在使用 tpope 环绕和重复,但我想知道是否有像

这样的命令
3ysw"

所以来自

one two three 

"one" "two" "three"

当你想引用三个单词时,从光标当前所在的单词开始,你可以这样做:

bv3ec'<Ctrl+r>"'

b 将光标置于当前单词的开头,v 进入可视化模式,3e 跳转到当前 3 个单词序列的末尾,c 剪切选择并进入插入模式,在此模式下插入左侧的引号 ' 并按 <Ctrl+r>" 以粘贴剪贴板缓冲区的当前内容,然后再插入其他引号 '.

如果您从第一个单词的第一个字符开始光标,请省略前导 b

您可以直观地 select 带有 v3e 的范围,然后 运行 对其进行替换命令::s/\v(\w+)/""/g(范围 '<,'> 应该自动被插入)。

但就我个人而言,我宁愿用 ysw" 包围一个词,然后 w.w.(根据需要重复)。


或者,记录一个执行两个步骤(环绕并移动到下一个单词)的宏,然后调用它 n 次:

qqysw"3wq

在你的 q 寄存器中之后,你可以调用 2@q 对剩余的单词执行环境。

另一个替换选项

s,\w\+,"&",g

s ............. substitute current line (add %s for the whole file)
\w\+ .......... one word or more
"&" ........... & represents the whole match on the search part
g ............. every occurrence on the line

OBS:当使用替换时,我们可以使用不同的分隔符以便于键入。 (在搜索诸如“/my/pattern/”)

之类的内容时也很有用