在vim中包装txt文件的单词未按预期工作

时间:2018-01-01 22:00:24

标签: vim textwrapping

我正在尝试在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。如果这个问题太天真,我很抱歉。

2 个答案:

答案 0 :(得分:1)

您的文本宽度和重新格式化工作正常,但表达式<[ngClass]="{{perkResult.perk === perk.perk}} ? 'highlight' : 'none-hightlight' "> 实际上是计算&#34;字节索引&#34;每行末尾的列位置(不是字符位置)。有关<div class="col-xs-12"> <div class="col-xs-12 benefit-selection"> <ul class="benefits-dropdown-ul" *ngIf="perkList"> . <a class="benefits-dropdown-div" *ngFor="let perkResult of perkList.results" (click)="onAddPerk(perkResult)"> //highlight here <li class="benefits-dropdown-li">{{ perkResult.perk }}</li> </a> </ul> </div> </div> <div class="col-xs-6 benefit-selected" *ngFor="let perk of company.perks; trackBy: customTrackBy; let i = inde {{ perk.perk }} </div> 工作原理所需的所有信息,请参阅col

相反,尝试使用像strchars这样的字符计数功能: :help col

在你的示例文本中,我得到的输出为83,因为包装在空格上的工作方式计算为字符。为了解决这个问题,您可以使用类似col的内容修剪尾随空格,现在我使用strchars上面的示例表达式会按预期返回80.

答案 1 :(得分:0)

:help col()为您提供列的字节索引。如果您只有ca这样的单字节字符,但您的文字包含很多字符,例如çU+00e7)或{{1 (U+00e3)用多个字节编码,因此许多行的计数都会关闭。

您真正想要的是使用á计算屏幕列。