如何在Vim中将文本换成一定长度?

时间:2009-05-05 07:30:55

标签: vim indentation

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

aaaaaaaaaaaaa 
bbbbbbbbbbbbb 
ccccccccccccc 
etc

我希望它更小:

aaaaa
aaaaa
bbbbb
bbbbb
ccccc
ccccc
etc

我怎样才能得到它?我如何管理设置这样一个块的长度?

6 个答案:

答案 0 :(得分:173)

你实际上可以做两件事:

  1. 让vim格式化(即更改)您的文字,以便通过插入换行符来缩短行
  2. 保持原样,但显示包裹
  3. 你想要哪一个?

    选项1可以通过设置textwidth来实现(例如:set textwidth=30(来自Swaarop的答案))。然后,您可以通过突出显示文本(在可视模式下)并键入gq来重新格式化文本。 (textwidth可缩写为tw,因此:set tw=30。)

    可以通过运行:set wrap / :set nowrap来切换选项2。这将包裹对于窗口来说太长的行。

    两者都是独立的。

答案 1 :(得分:58)

设置'textwidth'后,您可以选择具有可视模式的文本并按gq以很好地包装它(您也可以在某些旧/旧配置上使用Q)。

一些有用的提示:

gqq (wrap the current line)
gq} (wrap this 'paragraph', i.e. until the next blank line)
:h gq

答案 2 :(得分:21)

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

:%!fold -w5 

结果:

aaaaa
aaaaa
aaa 
bbbbb
bbbbb
bbb 
ccccc
ccccc
ccc

答案 3 :(得分:14)

:set textwidth=30

答案 4 :(得分:8)

如果您的文字没有空格,您希望以一定的长度打破,则既不需要使用外部fold也不必编写自己的formatexpr

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

会在80个字符处打破所有行。

答案 5 :(得分:0)

首先,将 textwidth 设置为 5

:set tw=5

然后,按 gqap 设置段落格式