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 может дополнительно предоставлять индикатор усечения:
:echo <a href="https://github.com/inkarkat/vim-ingo-library/blob/cab86b2e5f911892bba6df45b2b03db302684b7d/autoload/ingo/strdisplaywidth.vim#L50" rel="nofollow noreferrer">ingo#strdisplaywidth#TruncateTo</a>('a 日本語 string that is too long', 10)
a 日本語 …
:echo <a href="https://github.com/inkarkat/vim-ingo-library/blob/7bc29fe8b4129807f8323d373fe74e76dfc5705a/autoload/ingo/avoidprompt.vim#L66" rel="nofollow noreferrer">ingo#avoidprompt#TruncateTo</a>('a 日本語 string that is too long', 10)
a 日…long