当前位置:  开发笔记 > 开发工具 > 正文

使用Vim更改文本文件中的包装宽度

如何解决《使用Vim更改文本文件中的包装宽度》经验,为你挑选了1个好方法。

我想格式化srt字幕文本文件,以避免在我的媒体播放器上包装问题.

我需要将换行宽度设置为多个字符,例如43

我可以用Editplus做到这一点,它是一个内置的功能,效果很好.我想在Vim中做到这一点的原因,首先是Editplus只能在PC上使用,其次是Vim是badass.

我在网上找到了以下解决方案..

:设置tw = 43
gggqG

它确实有效,但不完全是我想要的.

例如

我有这个文字:

557
00:47:39,487 - > 00:47:42,453
我将不得不完成一些程序,
我让你看看它们对我来说是什么

格式化后,我得到:

557 00:47:39,487 - > 00:47:42,453我将
不得不完成一些程序,我
让你看看它们对
我来说是什么

它似乎忽略了换行符/ CR.正如您所看到的,"我会"已被添加到第一行.

如何让它不忽略换行符?

编辑:关于格式化的apoligies,第一次使用stackoverflow!



1> DrAl..:

您可以使用空格选项,formatoptions并将要包装的行以空格结束.

:set tw=43
:set fo+=w
:g/^\a/s/$/ /
gggqG

第三行在以字母开头的任何行的末尾添加一个空格,并fo+=w停止gq连接不以空格结尾的行.

看到:

:help fo-table
:help 'formatoptions'
:help gq
:help :g

编辑以回应评论

:g/^\a/s/$/ /

这意味着:

:g/   " Search the file
^\a   " For lines starting (^) with an alphabetic character (\a - equivalent to [A-Za-z])
/     " Then on each line that the regexp matches (i.e. each line starting with an alphabetic character)
s/    " Substitute...
$     " The end of line (zero-width match at the end of the line)
/ /   " With a space (slashes are delimiters)

global(:g)命令仅对当前文件进行操作,但是textwidthformatoptions行将持续整个会话.如果您希望这些选项仅用于当前缓冲区,请:setlocal改用:

:setlocal tw=43
:setlocal fo+=w
:help :setlocal

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有