让我们谈谈相对度量。我的 Vim 外观如下:
aaaaaaaaaaaaa
bbbbbbbbbbbbb
ccccccccccccc
etc
我希望它更小一些:
aaaaa
aaaaa
bbbbb
bbbbb
ccccc
ccccc
etc
我该如何获得它?以及如何管理设置这样一个块的长度?
让我们谈谈相对度量。我的 Vim 外观如下:
aaaaaaaaaaaaa
bbbbbbbbbbbbb
ccccccccccccc
etc
我希望它更小一些:
aaaaa
aaaaa
bbbbb
bbbbb
ccccc
ccccc
etc
我该如何获得它?以及如何管理设置这样一个块的长度?
你实际上可以做两件事情:
你想要哪一个?
选项1可以通过设置 textwidth
(例如::set textwidth=30
) 来实现。然后你可以通过突出显示文本(在可视模式下)并键入 gq
来重新格式化你的文本。(textwidth
可以缩写为 tw
,因此也可以使用 :set tw=30
)。
选项2可以通过运行 :set wrap
/ :set nowrap
来切换。这将换行超出窗口长度的行。
两个选项是独立的。
fold
命令,就像 fgm 的回答中一样。 - sleskeformatprg=fmt\ -70\ -s
,而不是设置tw
,并在可视模式下使用gq,效果非常完美!现在我可以格式化那些Git提交信息了。别忘了在formatprg中转义空格。 - ikwyl6一旦您设置了'textwidth',您可以使用可视模式选择文本,并按gq进行美观的换行(在某些旧版/传统配置中也可以使用Q)。
一些有用的提示:
gqq (wrap the current line)
gq} (wrap this 'paragraph', i.e. until the next blank line)
:h gq
gqq
包裹当前行(而不是 gqgq
或 gq$
)。 - ashgw
。我通常更喜欢使用gw
,因为它在格式化后将光标保持在原位(参见:h gw
)。我习惯性地键入gwip
来格式化当前正在编辑的段落,而不移动光标。 - postylem使用 fold(1) 是一种可能的方法:
:%!fold -w5
结果:
aaaaa
aaaaa
aaa
bbbbb
bbbbb
bbb
ccccc
ccccc
ccc
:set textwidth=30
textwidth
无法处理没有空格的情况。您可以编写自己的 formatexpr
函数来解决这个问题。 - Swaroop C H如果您有没有空格的文本想要在一定长度处换行,既不必使用外部的 fold
命令,也不需要编写自己的 formatexpr
函数。
:%s/\(.\{80\}\)/\1\r/g
将会在 80 个字符处断开所有行。
textwidth=5
:set tw=5
gqap
来格式化一个段落。