107

先说相对措施。我的 Vim 看起来像:

aaaaaaaaaaaaa 
bbbbbbbbbbbbb 
ccccccccccccc 
etc

我希望它更小:

aaaaa
aaaaa
bbbbb
bbbbb
ccccc
ccccc
etc

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

4

6 回答 6

189

你实际上可以做两件事:

  1. 通过插入换行符,让 vim 格式化(即更改)您的文本以具有更短的行
  2. 保持线条不变,但它们包裹起来

你要哪个?

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

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

两者都是独立的。

于 2009-05-05T12:14:37.113 回答
65

一旦你设置了'textwidth',你可以选择带有可视模式的文本,然后按 gq 来很好地包装它(你也可以在一些旧的/旧的配置上使用 Q)。

一些有用的提示:

gqq (wrap the current line)
gq} (wrap this 'paragraph', i.e. until the next blank line)
:h gq
于 2009-05-05T12:27:03.810 回答
23

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

:%!fold -w5 

结果:

aaaaa
aaaaa
aaa 
bbbbb
bbbbb
bbb 
ccccc
ccccc
ccc
于 2009-05-05T07:37:37.513 回答
14
:set textwidth=30
于 2009-05-05T11:47:06.040 回答
8

如果您有没有空格的文本要以一定长度断开,则既不需要使用 externalfold也不需要编写自己的formatexpr.

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

将在 80 个字符处断开所有行。

于 2013-03-16T00:44:43.083 回答
0

首先,将 textwidth 设置为 5

:set tw=5

然后,按gqap格式化段落

于 2021-06-09T03:03:44.247 回答