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

发布于 2024-07-18 08:45:19 字数 227 浏览 8 评论 0原文

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

aaaaaaaaaaaaa 
bbbbbbbbbbbbb 
ccccccccccccc 
etc

我希望它更小:

aaaaa
aaaaa
bbbbb
bbbbb
ccccc
ccccc
etc

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

Let's speak of relative measures. My Vim looks like:

aaaaaaaaaaaaa 
bbbbbbbbbbbbb 
ccccccccccccc 
etc

I would like it to be smaller:

aaaaa
aaaaa
bbbbb
bbbbb
ccccc
ccccc
etc

How can I get it? And how can I manage setting the length of such a block?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

不爱素颜 2024-07-25 08:45:19

你实际上可以做两件事:

  1. 让 vim 通过插入换行符来格式化(即更改)你的文本以使其具有更短的行
  2. 保持行不变,但显示它们换行

你想要哪个?

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

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

两者都是独立的。

You can actually do two things:

  1. Let vim format (i.e.change) your text to have shorter lines, by inserting linebreaks
  2. Leave lines as they are, but display them wrapped

Which do you want?

Option 1 would be achieved by setting textwidth (for example :set textwidth=30 (from Swaarop's answer)). Then you can reformat your text by highlighting it (in visual mode) and typing gq. (textwidth can be abbreviated as tw, thus :set tw=30.)

Option 2 can be toggled by running :set wrap / :set nowrap. This will wrap lines which are too long for the window.

Both are independent.

梦纸 2024-07-25 08:45:19

设置“textwidth”后,您可以使用视觉模式选择文本,然后按 gq 将其很好地换行(您也可以在某些旧/旧配置上使用 Q)。

一些有用的提示:

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

Once you set 'textwidth', you can select text with visual mode and press gq to wrap it nicely (you can also use Q on some older/legacy configurations).

A few useful tips:

gqq (wrap the current line)
gq} (wrap this 'paragraph', i.e. until the next blank line)
:h gq
放手` 2024-07-25 08:45:19

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

:%!fold -w5 

结果:

aaaaa
aaaaa
aaa 
bbbbb
bbbbb
bbb 
ccccc
ccccc
ccc

Using fold(1) is one possibility:

:%!fold -w5 

Result:

aaaaa
aaaaa
aaa 
bbbbb
bbbbb
bbb 
ccccc
ccccc
ccc
往事随风而去 2024-07-25 08:45:19
:set textwidth=30
:set textwidth=30
所谓喜欢 2024-07-25 08:45:19

如果您希望将不带空格的文本以一定长度拆分,则无需使用外部 fold 也无需编写自己的 formatexpr

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

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

If you have text without spaces that you want to break at a certain length, it is neither necessary to use external fold nor write your own formatexpr.

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

will break all lines at 80 chars.

故事未完 2024-07-25 08:45:19

首先,将 textwidth 设置为 5 然后

:set tw=5

,按 gqap 格式化段落

First, set textwidth to 5 with

:set tw=5

Then, press gqap to format a paragraph

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文