A.P*_*.P. 12 vim text-formatting
我有一个由块组成的相当大的文本文件,例如
Short line.
Really long line.
Short line.
Run Code Online (Sandbox Code Playgroud)
由空行分隔,我想使用 vim(在 Linux 上)来分解长行并获得像
Short line.
This was
part of
a long line.
Short line.
Run Code Online (Sandbox Code Playgroud)
我有问题gq(和gw)是它重排的每个块作为一整段,即不保持每个区块中的两个换行,并根据:help fo-table都没有gq的格式选项将允许我做我想做的。我还认为,如果我可以将换行符定义为段落分隔符,我就可以实现我的目标,但根据:help paragraph这些是硬编码的。
编辑:我知道我可以使用gq或gw格式化每一长行,但由于我的文件运行超过几千行,我正在寻找一种自动实现这一目标的方法。
Dan*_*son 16
:%norm! gww
Run Code Online (Sandbox Code Playgroud)
这会在整个缓冲区上应用normal命令gww(将当前行格式化为 with gw),而不考虑自定义映射(以避免在例如gw已映射到其他内容时出现问题)。
看
:help :%:help :norm:help gww这个替代方案是根据 Ben 在评论中的建议,并且比原始解决方案更直接,原始解决方案保存在下面,因为由于正则表达式匹配能力,它可能更适合其他类似情况。但是,在“匹配所有行”的情况下,它是不必要的。
应用gww在程序的缓冲区每一个人行:
:g/^/norm gww
Run Code Online (Sandbox Code Playgroud)
见:help :g和:help norm。^匹配一行的开头,实际上这使得它匹配每一行。
也可以选择仅选择超过 60 个字符的行
:g/\%>60v/norm gww
Run Code Online (Sandbox Code Playgroud)
(请参阅:help \%<)但实际上gww只会重新格式化比其他textwidth任何时候都长的行,因此无论是速度还是结果都可能无关紧要。
(我使用的v是“虚拟列”而不是c“列”,因为后者确实计算了行中的一定数量的字节。这在使用多字节编码时可能会导致意外结果,这通常是需要警惕的原因。实际上,由于与上述相同的原因,这不是一个真正的问题,因为这gww不会重新格式化比textwidth任何情况下更短的行。)
| 归档时间: |
|
| 查看次数: |
6840 次 |
| 最近记录: |