我很好奇是否有一种方法可以使用 vim 一次用引号括起几个单词。我正在使用 tpope 环绕并重复,但我想知道是否有类似的命令
3ysw"
所以从
one two three
到
"one" "two" "three"
您可以用 直观地选择范围v3e
,然后在其上运行替换命令:(:s/\v(\w+)/"\1"/g
范围'<,'>
应自动插入)。
不过,就个人而言,我宁愿用 包围一个词ysw"
,然后再做w.w.
(根据需要重复)。
或者,记录一个执行两个步骤的宏(围绕并移动到下一个单词),然后调用它 n 次:
qqysw"3wq
在这在您的q
寄存器中之后,您可以调用2@q
以对剩余的单词进行环境处理。
当您想引用三个单词时,从光标当前所在的单词开始,您可以执行以下操作:
bv3ec'<Ctrl+r>"'
b
将光标放在当前单词的开头,v
进入可视模式,3e
在当前 3 个单词序列的末尾跳转,c
剪切选择并进入插入模式,在此插入左引号'
并按下<Ctrl+r>"
以粘贴当前内容剪贴板缓冲区,在插入另一个封闭引号之前'
。
b
如果您从光标在第一个单词的第一个字符开始,请省略前导。
另一种替代选择
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/”之类的内容时也很有用)