如何在Vim中将文本换行到一定的长度?

我们来谈谈相关的措施。 我的Vim看起来像:

aaaaaaaaaaaaa bbbbbbbbbbbbb ccccccccccccc etc 

我希望它更小:

 aaaaa aaaaa bbbbb bbbbb ccccc ccccc etc 

我怎么才能得到它? 我怎样才能设置这个块的长度?

你实际上可以做两件事情:

  1. 让vim通过插入换行符来格式化(即更改)文本以缩短行数
  2. 保持原样,但显示它们包裹

你要哪个?

选项1将通过设置textwidth (例如:set textwidth=30 (来自Swaarop的回答))来实现。 然后,您可以通过突出显示(在可视模式下)和inputgq来重新格式化文本。

选项2可以通过运行:set wrap:set nowrap来切换。

两者都是独立的。

一旦你设置了“textwidth”,你就可以用可视模式select文本,然后按下gq来很好地包装它(你也可以在一些旧的/旧的configuration上使用Q)。

一些有用的提示:

 gqgq (wrap the current line) gq} (wrap this 'paragraph', ie until the next blank line) :h gq 

使用fold(1)是一种可能性:

 :%!fold -w5 

结果:

 aaaaa aaaaa aaa bbbbb bbbbb bbb ccccc ccccc ccc 
 :set textwidth=30 

如果你的文本没有空格,你想要在一定的长度中断,这是没有必要使用外部fold或编写自己的formatexpr

:%s/\(.\{80\}\)/\1\r/g

将打破80个字符的所有线路。