在 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/”)
之类的内容时也很有用
我很好奇是否有一种方法可以使用 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/”)
之类的内容时也很有用