是否可以删除单个换行符,但在Vim中保留空行(我猜是双行换行?)?我正在使用Vim的HardPencil插件进行一些文字处理,我喜欢硬线断线,因为它可以更容易地在文件周围反弹。但是,我需要在LibreOffice Writer或Word中共享这些信息,如果其他人编辑文件,那么硬换行就不会很好。澄清一下,这就是我所拥有的:
Line1.
Line2.
Line3.
Line4.
Line5.
这就是我想要的:
Line1. Line2. Line3.
Line4. Line5.
基本上硬线断开应该用空格替换,并且应该保留双线断点。
答案 0 :(得分:4)
您可以仅使用line+line break
替换line
,并使用否定展望\(\n\)\@!
以确保其后面没有空行:
:%s/\(.\+\)\n\(\n\)\@!/\1 /
@ Peter_Rincker的清洁解决方案:
:%s/.\+\zs\n\ze./ /
答案 1 :(得分:4)
将gw
(或gq
)与动作一起使用(例如G
)。
gwG
gw
是Vim的段落格式化运算符" reflows"文本到所需的'textwidth'
。您可能希望暂时将'textwidth'
设置为0
,以获得无限制的文字宽度(:set tw=0
)。
还有其他一些方法也可以这样做:
:%!fmt
- 与上述相同,但使用fmt
外部工具和过滤器。:v/^$/,//-j
- 将非空行挤压在一起。如果范围的末尾没有空行:g/\v(.+\zs\n)+/,-//j
- 同时挤压非空行,但避免了上一个方法的范围错误。如需更多帮助,请参阅:
:h gw
:h operator
:h 'tw'
:h filter
:h :range!
:h :range
:h :v
:h :j
:h :g
:h magic
:h /\zs