假设我正在编辑以下文档(*= cursor):
Lions
Tigers
Kittens
Puppies
*
Humans
Run Code Online (Sandbox Code Playgroud)
我可以使用什么序列来删除周围的空白区域,以便我留下:
Lions
Tigers
Kittens
Puppies
*
Humans
Run Code Online (Sandbox Code Playgroud)
注意:我正在寻找一个处理任意数量空行的答案,而不仅仅是这个案例.
编辑1:行号未知,我只想影响我的光标所在的范围.
编辑2:编辑示例以显示我需要保留边缘上的前导空格
谢谢
glt*_*lts 10
简单.在正常模式下,dipO<Esc>应该这样做.
说明:
dip 在空行上删除它和所有相邻的空白行.O<Esc> 打开一个新的空行,然后返回正常模式.更简洁,cip<Esc>将这两个步骤合二为一,正如@Lorkenpeist所建议的那样.
可能的解决方案是使用:join带有范围的命令:
:?.?+1,/./-1join!
Run Code Online (Sandbox Code Playgroud)
说明:
[range]join!将联合起来[range].!没有插入任何额外空间的手段.?.?+11在+1可以假设这可以简写?.?+/./-11假设相同,/./-//-:join可以简化为:j最终缩短的命令:
:?.?+,//-j!
Run Code Online (Sandbox Code Playgroud)
以下是一些可能很方便的相关命令:
1)删除所有空行:
:g/^$/d:v/./d2)将所有空行挤压成1个空行:
:v/./,//-j有关更多帮助请参阅:
:h :j
:h [range]
:h :g
:h :v
Run Code Online (Sandbox Code Playgroud)