Vim为什么将最大文本宽度设置为79而不是80?


13

我对Vim中的一些默认值有些疑惑。特别是对于gq{motion},据说

[...]
If the 'textwidth' option is 0, the formatted line
length is the screen width (with a maximum width of
79).

我认为,如果将最大宽度设置为,应该更有意义80

有人可以启发我吗?我想我缺少了一些东西。


1
好吧,80以这样一个相当随意的“标准”开始吧……为什么不79呢?现在,7980列宽的终端中换行可以为右边留出更多空间,并可以提高可读性。github.com/vim/vim/blob/...
romainl

2
也许在80列范围的终端上,最后一列是为包装符号保留的?不过,如果您启用了行号,那么它们肯定会占用不止一列。所以,我还是很困惑。此外,从您链接的代码中,79可以使用它的最大值吗?也许我不明白我读了什么。
Atcold

3
...或者您可以设置textwidth并完成。
VanLaser

13
80是旧硬件终端以及后来的MS DOS(文本模式)屏幕的列数。 tw=79而不是tw=80因为在80列的终端上显示一行80个字符长的行会打印额外的换行符。
佐藤桂2016年

7
总是添加一个换行符。如果它恰好是一个80字符宽的终端上的第81个字符,您将得到一个完整的行,然后是一个空行。
佐藤桂2016年

Answers:


7

我没有任何证据表明这就是为什么最初选择79的原因,但是保留为该值的一个很好的理由是因为如果您使用'list'包含一个for值eol'listchars'则listchar的显示将导致一个80个字符,长度的行,以换成80个字符宽的终端中的下一行。

如果该行只有79个字符,则第80列是免费的,供行尾listchar使用。


我没听懂 我应该在哪里使用'list'?应该怎么办?
Atcold

@Atcold这个选项使通常不可见的字符(例如行尾)显示在屏幕上。查看:help 'list'或尝试运行:set list以查看实际效果。
丰富

:set list没有太大的作用。我敢打赌,我不具备eollistchars。我不太确定这是79角色背后的原因。我相信@ sato-katsura在评论中是最好的答案。
Atcold

eol'listchars'默认情况下处于启用状态,但是当然您的配置中可能已将其删除了。我在回答中特别指出,我没有理由相信这是最初选择79的历史原因。我只是在给出另一个原因,为什么它现在仍然是很好的使用价值。
丰富

@Atcold。默认情况下不显示换行符,为此保留额外的字符是没有意义的。
克里斯汀·布拉班德

6

重要的是要意识到,此“默认值”仅适用于该部分中所述的gqgw命令以及自动格式化。默认textwidth值为0。此外,:right:center默认至80,而不是79。

至于为什么79选择,它不能从VI,因为是直接保持过gqgw和自动格式六是不存在的。这主要是猜测,但是我相信选择了默认的79自动格式化是为了与vi现有的自动包装保持一致。这适用gq并且gw是副作用;人们可能会期望选择80。

在vi中(如果在vim中,则在vim中textwidth=0),文本将以窗口宽度负开始自动包装wrapmargin。但是,如果为wrapmargin=0,则不会自动包装。这意味着,如果您使用的ADM-3A字符数限制为80,且具有wrapmargin=1,则自动换行的最大宽度为79。此行为的一个好处是,有一个游标可以在等待查看什么内容的地方居住下一个字符将在决定换行之前。当然,vi和vim可以将光标放在下一行(键入一个很长的单词时会观察到),但是留出额外的一列会更好一些。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.