Обрезать заднюю часть имени файла вместо передней, если не хватает места в multi-tab vim - PullRequest
0 голосов
/ 26 октября 2018

Если у меня недостаточно терминальных столбцов для отображения всех имен файлов в сеансе vim с несколькими вкладками, он усекает начало имен файлов, чтобы поместить их все во вкладки:

С достаточным пространством:

enter image description here

Без достаточного места:

enter image description here

Как вы можете видеть, он обрезал имена спереди, что затрудняет их поиск. Могу ли я изменить это поведение, чтобы сделать vim усеченным из задней части имени?

1 Ответ

0 голосов
/ 29 октября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...