【发布时间】:2018-08-04 22:12:16
【问题描述】:
我很好奇是否有一种方法可以使用 vim 一次用引号括起几个单词。我正在使用 tpope 环绕并重复,但我想知道是否有类似
的命令3ysw"
所以从
one two three
到
"one" "two" "three"
【问题讨论】:
我很好奇是否有一种方法可以使用 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/”之类的内容时也很有用)
【讨论】: