screen + vim - Любой способ автоматически установить имя окна экрана, чтобы открыть имя файла vim?

10

У меня есть довольно хороший экранный файл, который показывает мне открытые окна, почти как вкладки в нижней части терминала. В настоящее время окна названы в соответствии с моей подсказкой, которая не очень полезна. Есть ли способ автоматически называть окна на основе имени открытого сеанса vim, который в данный момент находится в окне? Я думаю, что это сделало бы превосходным многооконный редактор, если бы это было возможно.

user4785
источник

Ответы:

5

Установите titleопцию . Это работает из коробки для меня в Xterm и тому подобное, но не на экране. Этот совет работает :

if &term == "screen"
  set t_ts="\ek"
  set t_fs="\e\\"
  set title
endif

Другой подход заключается в написании preexecфункции в вашей оболочке, которая устанавливает заголовок окна для запускаемой команды. Zsh поддерживает preexecизначально, и bash может сделать это тоже . Вот пример Zsh .

Жиль "ТАК - перестань быть злым"
источник
Здравствуй. Это не сработало для меня, но я думаю, что это из-за того, как мой файл .screenrc настроен. 1 termcapinfo xterm * ti @: te @ 2 hardstatus всегда заключает в себе 3 hardstatus string '% {gk} [% {G}% H% {g}] [% =% {wk}%?% - Lw%?% {= B kR} (% {W}% n *% f% t%? (% u)%?% {= b kR})% {= kw}%?% + Lw%?%?% =% {g}] [% {Y}% l% {g}]% {= b C} [% m /% d% c]% {W} '
user4785
@ user4785: Если ваша подсказка может установить заголовок окна «Экран», Vim также сможет это сделать. Какова ваша подсказка? Мой .vimrcфрагмент работает без твоего .screenrc?
Жиль "ТАК - перестань быть злым"
1

Я сделал это немного более хакерским способом: используя tcsh, я поместил следующее в мой .cshrc

# escape sequence to set the screen title
alias stitle 'echo -n "^[k\!*^[\\"'
# shorthand to set the screen title to the hostname
alias H stitle `hostname -s`
# shorthand to set the screen title to the filename, launch vim, and then set it back
alias vis 'stitle \!* ; vim \!* ; H'

Пока вы не забываете использовать vis вместо vim, когда вам нужен заголовок, он работает.

Я также добавил

set notitle

в мой .vimrc, чтобы vim не устанавливал заголовок окна, в котором работал.

22degrees
источник