我想:
我想一步到位地进行更改。以下是我可以通过多个步骤完成的任务:
:'<,'>s/^/ /
gv
:'<,'>s/ *$//
这是我发现一步完成的唯一方法:
:'<,'>s/^/ /|:exec "norm gv:s/ *$//^@"
其中^@
Ctrl - v Ctrl - j
有没有更好的方法来做到这一点。我对可视模式下的多个s///
命令的一般解决方案感兴趣,不止一个关于前导和尾随空格。
答案 0 :(得分:3)
在一次替换中全部完成:
:s/\(.\{-}\)\s*$/ \1/
我们捕获线条的“肉”并添加起始空格,同时删除尾随空格。
多次换人:
:s/^/ /|'<,'>s/\s*$//
我们明确使用'<,'>
作为我们的视觉范围(参见:h '<
)。我们也可以使用*
作为'<,'>
的简写。例如:*s/\s*$//
答案 1 :(得分:0)
下面;它是最好的(即更短和更快)一次完成两个删除(根据@ PeterRincker的回答)。一般来说,你不需要重新选择;即使视觉模式已经离开,'<,'>
也会持续存在(直到你做另一个选择)。所以,这可行:
:'<,'>s/^/ / | '<,'>s/ *$//