我正在尝试在vim上编辑文件。您可以下载txt文件here。
我按照这个blog的说明。我也在使用我在StackOverflow上阅读的内容。
首先,我在vim(命令模式)中执行了此操作:
:set textwidth=80
其次,我使用视觉模式v
来选择文件中的所有行。我从第一行开始,按下G
(进入最后一行)。这使得所有文件都被选中。
第三,重新格式化,我做了:
gq
好的,文本接近我想要的。但是,当我这样做时:
:echo max(map(range(1, line('$')), "col([v:val, '$'])")) - 1
输出是:
90
上面的命令显示了最长行的字符长度。输出应该是80,而不是90!
我设置为文本换行的限制是:80
我犯了什么错误?如何将文本包装到80列?
我本周开始使用Vim。如果这个问题太天真,我很抱歉。
您的文本宽度和重新格式化工作正常,但表达式col
实际上是计算每行末尾列位置的“字节索引”(而不是字符位置)。有关:help col
工作原理的所有信息,请参阅col
。
相反,尝试使用像strchars:echo max(map(range(1, line('$')), "strchars(getline(v:val))"))
这样的字符计数功能
在你的示例文本中,我得到83的输出,因为包装在空白上的方式工作,计算为字符。为了解决这个问题,你可以使用类似:%s/\s*$//
的方法修剪尾随空格,现在我使用strchars的上面的示例表达式按预期返回80。