如果我没有足够的终端列来显示多选项卡vim会话中的所有文件名,它会截断文件名的开头,以便将它们全部放入选项卡中:
有足够的空间:
没有足够的空间:
如您所见,它已经从前面截断了名称,这使得它们更难找到。我可以扭转这种行为,使vim从名称的后面截断吗?
最佳答案
TL; DR:没有简单的选择,但是(GUI和终端)选项卡是完全可定制的,因此您确实可以根据需要进行调整。
:help setting-tabline
都提供了用于调整选项行的文档以及示例MyTabLine()
函数,
只是一个简单的示例,导致选项卡页面行
类似于默认值,但未为修改后的缓冲区添加+或
截断名称。
然后甚至提到您想要的行为:
如果没有足够的空间,您将希望以一种巧妙的方式减小标签的宽度。
实施截断
为了从右侧截断,您可以使用 strpart()
(但它基于字符计数,并且需要对非ASCII字符进行显式处理)或 matchstr()
。将后者与 /\%v
正则表达式原子结合使用,您还可以匹配字符宽度,处理制表符和全角字符:
:echo matchstr('a 日本語 string that is too long', '^.*\ze\%>10v.*$')
a 日本語 s
像我的ingo-library plugin这样的库函数还可以提供截断指示符:
:echo ingo#strdisplaywidth#TruncateTo('a 日本語 string that is too long', 10)
a 日本語 …
:echo ingo#avoidprompt#TruncateTo('a 日本語 string that is too long', 10)
a 日…long