Vim: изменить ярлык для конкретной вкладки

19

Скажем, у меня в Vim открыта куча вкладок с табулированной строкой, которая выглядит примерно так:

1 v/file1.py 2 t/file.py 1 t/file.py 1 o/otherfile.py

Посмотрите, как на двух вкладках написано "t / file.py"? Это разные файлы, они просто превращаются в одну и ту же метку вкладки.

В моем рабочем процессе заголовки вкладок часто бывают неоднозначными (да, шеф-повар называет все «default.rb») или бесполезными («Я знаю, что на одной из этих 8 вкладок с 4 буферами есть файл, который я ищу ...»).

Я хотел бы переименовать вкладки, чтобы указать, что они логически представляют:

1 homepage_view 2 tests 1 homepage_template 1 o/otherfile.py

У меня все в порядке с вкладками по умолчанию для метки на основе имени файла, если я могу изменить их после создания вкладки.

Как я могу сделать это в Vim?

spiffytech
источник
1
У меня нет времени экспериментировать прямо сейчас, но вижу :help setting-tabline(для vim в терминале) или :help setting-guitablabel(для gvim). Вы можете написать функцию, которая проверяет локальную переменную табуляции и возвращает либо ту, либо некоторую по умолчанию. Затем, после открытия вкладки :let t:mytablabel = 'homepage_template'.
benjifisher

Ответы:

15

Есть хороший плагин под названием Taboo, который делает это легко. Просто установите его, а затем вы можете изменить заголовок вкладки с помощью:

:TabooRename My Tab Title

Вы можете посмотреть исходный код этого плагина, если вы заинтересованы в написании собственного решения.

Джонатан Поттер
источник
TabooЭто фантастично. TabooResetи TabooRenameбуквально переключает два «режима» Tab-line ==> именованной вкладки от Taboo и автоматически называемой вкладки от Vim. Это идеально повторяет " именованную Windows " из Tmux. Более того, вкладки, названные в Табу, могут быть восстановлены с помощью Startify (или с помощью любых других инструментов сохранения сессии).
Llinfeng
8

Для gvim смотрите

:help 'guitablabel'
:help setting-guitablabel

Задайте для выражения выражение, которое оценивается как t:mytablabel(локальная переменная табуляции), если оно существует, или для пустой строки (имеется в виду использование по умолчанию):

:set guitablabel=%{exists('t:mytablabel')?t:mytablabel\ :''}

Может быть, это уже слишком сложно, или, может быть, вы хотите, чтобы полюбить. В этом случае определите функцию:

function! GuiTabLabel()
  return exists('t:mytablabel') ? t:mytablabel : ''
endfunction
:set guitablabel=%{GuiTabLabel()}
:set go+=e

Затем в любой вкладке, где вы хотите переопределить значение по умолчанию, сделайте что-то вроде

:let t:mytablabel = 'homepage_template'

Если вы используете vim в терминале, а не в gvim, вам нужно установить 'tabline'опцию вместо 'guitablable'. Это немного сложнее, так как вам нужно одно выражение, включающее метки для всех открытых вкладок. Полный пример под

:help setting-tabline
benjifisher
источник