我们假设我有文字。
1 2 3 4 5 6 7 8 9
然后我从5到9中选择visual block
。
|-------| Select visual block
1 2 3 4 5 6 7 8 9
运行替换命令:'<,'>s/ /, /g
。
我期待以下。
1 2 3 4 5, 6, 7, 8, 9
然而,真正的结果是
1, 2, 3, 4, 5, 6, 7, 8, 9
替换命令似乎适用于选择visual block
的整行,而不仅仅是块。
是否有任何方法可以将replace命令仅应用于选定的visual block
?
答案 0 :(得分:5)
在我看来,这种行为是vim中的一个错误。你可以像这样解决它:
:'<,'>s/\%V \%V/, /g
\%V
仅在当前视觉区域内匹配。
答案 1 :(得分:2)
只是为了澄清一件事:other
命令是 linewise ,这意味着它将在范围内的行上执行替换。
顺便说一句,单引号后跟位置符号如:s
表示可视块的起始行。 '<
表示您使用'a
命令标记的行。
如果要引用精确位置(列),则需要在位置符号前使用`而不是ma
。例如,您可以通过“&lt;”移动到最近选择的可视块的起始位置(实际列),其中'
只能移动到该行的开头。但这在'<
命令中不起作用,如上所述,替换命令是linewise。