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