我想使用 vim 以格式良好的方式编辑长文本(散文/无代码)。
让我们考虑这个文件:
我可以使用句子、段落等。vim 的功能,但长句格式有点难看/可读性差。
所以我想有一些合理的对齐与严格固定的列宽度(假设列=正好100)。
我做了一些测试,安装了
par
unix 命令行实用程序(sudo apt-get install par
)并设置 vim 使用它(带有“justify”标志):
:set formatprg=par\ jw100
并执行 vim 命令:
gqG
但没有完美的喜悦,请参见此处的屏幕截图:
如您所见,我没有 100 个字符的确切理由。 为什么 ?!这可能是因为 par 无法识别一些 >8 位字符(此处为意大利语文本)?
事实上还有第二个问题:我不想在破坏原始句子(引入空白/换行)的对齐阐述中永久转换原始文本,但我只想查看文本,而不影响原始文本。有办法做到格式化视图模式吗?
Vim 有
:set wrap
,仅此而已。请记住,它不是所见即所得编辑器,因此查看合理的文本超出了范围。
您确实必须转换物理文本(来回)。如果
par
实用程序不起作用(我认为它应该处理 UTF-8 编码文本;检查您的 $LANG
值),您还可以尝试使用 Vim 附带的 $VIMRUNTIME/macros/justify.vim
脚本。
要在文件上临时使用
par
,请确保您已使用 :w
保存,然后使用 :!par jw100 <% | less
,它将向您显示文件的只读可滚动 100 个字符的合理版本。完成后,按 q,然后按 Enter
这是一些 Lorem Ipsum 文本的示例:
实现此目的的正则表达式:
:%s/\([^,]\{100}\)/\1\r/g
也可以将
hyphen
放在行尾分割词处:
:%s/\(\w\)$\n\(\w\)/\1-\r\2/g
等等等等。