Як відобразити ім'я файлу, який я зараз редагую за допомогою vim на назві терміналу?


20

Я редагую кілька файлів, що знаходяться в одній папці, на декількох вкладках, на одному терміналі.

pwd(каталог, в якому я зараз працюю) відображається у верхній частині заголовка терміналу, але не назва файлу, який я редагую. Він стає заплутаним при роботі з декількома файлами в одному каталозі.

Як відобразити ім'я поточного файлу у верхній частині терміналу на додаток до pwd.

Я бігаю vimв баш-корпусі gnome-terminal, 12.04 LTS.


1
Редагування за допомогою якого редактора? У якій оболонці? Який термінальний емулятор?
тердон

@terdon - Редагування за допомогою Vim, bash Shell, xterm emulator
malhar

2
Будь ласка, відредагуйте своє запитання, щоб додати додаткову інформацію, це важко читати і легко пропустити в коментарях. Потім ви можете надіслати повідомлення користувачеві, який запитав інформацію, залишивши коментар та включивши його @перед ім'ям користувача. Наприклад, до ping мені : @terdon.
тердон

xtermне має вкладок. Ви впевнені, що це xterm? echo $TERMзазвичай не повертає ім'я емулятора вашого терміналу, якщо саме це ви зробили.
тердон

@terdon Так, я використовував echo $ TERM. він виводить "xterm". Я використовую 64-бітний термінал ubuntu 12.04 LTS за замовчуванням. Чи є інші способи перевірити деталі емулятора.
malhar

Відповіді:


13

Ви повинні мати / створити файл, названий .vimrcу вашому домашньому каталозі, із таким кодом всередині:

let &titlestring = $USER . "@" . hostname() . " " . expand("%:p")
if &term == "screen"
  set t_ts=^[k
  set t_fs=^[\
endif
if &term == "screen" || &term == "xterm"
  set title
endif

введіть тут опис зображення

Джерело: gnome-terminal не дозволяє змінювати назву


Щоб створити ^ [, що є втечею, вам потрібно ввести CTRL + V <Esc>
tinmarino

8

Поточний (прийнятий) відповідь не працює, якщо ви перемикаєте файли / буфери в рамках одного із своїх сеансів vim. Заголовок не оновлюється.

Далі досить мати автоматично оновлюються назви в гномом-термінал також при перемиканні файлів за допомогою :e foo.txt, :b0, :b#і т.д.

Просто помістіть це у свій ~/.vimrcфайл:

autocmd BufEnter * let &titlestring = ' ' . expand("%:t")             
set title

Система: Ubuntu 14.10, vim 7.4.273, gnome-terminal 3.6.2-0ubunt.


Не повинно set titleбути на одній лінії, після |?
Віктор Сергієнко

Пов'язане з питанням: відновити заголовок після виходу з vim, додати set titleold=в .vimrc.
Віктор Сергієнко

5

Просто додайте

set title

до вашого ~/.vimrc.

Приклад заголовку: тестовий файл (~ / Документи) - VIM


1
Це єдина відповідь, яка працювала на мене і є найкоротшою.
користувач10089632

1

Ви можете додати ім'я редагованого файлу на вкладці таким чином:

  1. перейти до меню вгорі терміналу. Terminal-> Set Title-> Тут ви додаєте ім'я файлу, який ви зараз редагуєте

наприклад, коли ви відкриваєте термінал, заголовок терміналу показує лише "~". pwd-шоу / домашня сторінка / ххх /

Припустимо, що в цьому місці ви редагуєте файл ABC.cpp, ви можете встановити заголовок вкладки на "~ / ABC.cpp", додавши "/ABC.cpp" у полі Set Title.

Так само ви можете повторити це і для інших вкладок.


4
І ви будете робити ці зміни кожного разу, редагуючи інший файл? Звучить болісно ...
Radu Rădeanu

0

Це також змінює назву вікна, якщо ви перейменовуєте буфер:

set title
augroup WindowTitleGroup
  autocmd!
  autocmd BufEnter,BufFilePost * let &titlestring = expand('%:t')
augroup end

Якщо ввести команду в групу, то уникнути виконання команди кілька разів при пошуку джерел vimrcбільше одного разу.

Це чудово працює з vim-eunuch, який дозволяє перейменувати файл за допомогою :Rename.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.