如何仅替换选定的视觉块而不是Vim中的线

San*_*Kim 2 vim

我们假设我有文字.

1 2 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)

然后我visual block从5到9中选择一个.

        |-------| Select visual block          
1 2 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)

运行replace命令:'<,'>s/ /, /g.

我期待以下.

1 2 3 4 5, 6, 7, 8, 9
Run Code Online (Sandbox Code Playgroud)

然而,真正的结果是

1, 2, 3, 4, 5, 6, 7, 8, 9
Run Code Online (Sandbox Code Playgroud)

替换命令似乎适用于visual block不仅选择块的整行.

是否有任何方法可以将替换命令应用于仅选定的visual block

mel*_*ene 6

在我看来,这种行为是vim中的一个错误.你可以像这样解决它:

:'<,'>s/\%V \%V/, /g
Run Code Online (Sandbox Code Playgroud)

\%V 仅在当前视觉区域内匹配.

  • 不是错误,而是Ex命令范围的特性.Wray Zheng的答案解释了它. (2认同)