Jak wyświetlić nazwę pliku, który aktualnie edytuję za pomocą vima na tytule terminala?

20

Edytuję wiele plików znajdujących się w tym samym folderze, na wielu kartach, na jednym terminalu.

pwd(katalog, w którym obecnie pracuję) jest wyświetlany w górnej części nagłówka terminala, ale nie nazwa pliku, który edytuję. Robi się mylące podczas pracy z wieloma plikami w tym samym katalogu.

Jak wyświetlić nazwę bieżącego pliku na górze terminala oprócz pwd.

Pracuję vimw bash shell gnome-terminal, na 12.04 LTS.

malhar
źródło
1
Edycja za pomocą jakiego edytora? W której skorupce? Który emulator terminala?
terdon
@terdon - Edycja za pomocą Vima, bash Shell, emulator xterm
malhar
2
Proszę edytować swoje pytanie, aby dodać dodatkowe informacje, to jest trudne do odczytania i łatwo przegapić w komentarzach. Następnie możesz pingować użytkownika, który poprosił o informacje, pozostawiając komentarz i dołączając @przed jego nazwą użytkownika. Na przykład, aby ping mnie: @terdon.
terdon
xtermnie ma zakładek. Jesteś pewien, że to jest xterm? echo $TERMzwykle nie zwraca nazwy emulatora terminala, jeśli to zrobiłeś.
terdon
@terdon Tak, użyłem echa $ TERM. wypisuje „xterm”. Używam 64-bitowego domyślnego terminalu Ubuntu 12.04 LTS. Czy istnieją inne sposoby sprawdzenia szczegółów emulatora.
malhar

Odpowiedzi:

13

Musisz mieć / utworzyć plik o nazwie .vimrcw swoim katalogu domowym z następującym kodem w środku:

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

wprowadź opis zdjęcia tutaj

Źródło: gnome-terminal nie pozwala na zmianę tytułu

Radu Rădeanu
źródło
Aby utworzyć ^ [, który jest ucieczką, musisz wpisać CTRL + V <Esc>
tinmarino
8

Obecna (zaakceptowana) odpowiedź nie działa, jeśli zmienisz pliki / bufory w jednej z sesji vim. Tytuł nie zostanie zaktualizowany.

Poniższa wystarczy mieć automatycznie aktualizowane tytuły w gnome-terminal również po przełączeniu plików za pomocą :e foo.txt,:b0 , :b#, itd.

Po prostu umieść to w swoim ~/.vimrcpliku:

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

System: Ubuntu 14.10, vim 7.4.273, gnome-terminal 3.6.2-0ubunt.

Anne van Rossum
źródło
Po tym nie powinno set titlebyć na tej samej linii |?
Victor Sergienko
Powiązane z pytaniem: aby przywrócić tytuł po wyjściu z vima, dodaj set titleold=do .vimrc.
Victor Sergienko
5

Po prostu dodaj

set title

do twojego ~/.vimrc.

Przykładowy tytuł: plik testowy (~ / Dokumenty) - VIM

pauloue
źródło
1
To jedna odpowiedź, która zadziałała dla mnie i jest najkrótsza.
user10089632
1

Możesz dodać nazwę edytowanego pliku na karcie w następujący sposób:

  1. przejdź do Menu na górze terminala. Terminal-> Ustaw tytuł-> Tutaj dodajesz nazwę aktualnie edytowanego pliku

np. kiedy otworzysz terminal, jego nagłówek pokazuje tylko „~”. programy pwd / home / xxx /

Załóżmy, że w tym miejscu edytujesz plik ABC.cpp, możesz ustawić tytuł zakładki na „~ / ABC.cpp”, dodając „/ABC.cpp” w polu Ustaw tytuł.

Podobnie możesz to powtórzyć dla innych kart.

użytkownik223882
źródło
4
Czy zrobisz te zmiany za każdym razem, gdy edytujesz inny plik? Brzmi
bolesnie
0

Zmienia to także tytuł okna, jeśli zmienisz nazwę bufora:

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

Umieszczenie polecenia w grupie pozwala uniknąć wielokrotnego wykonywania polecenia podczas pozyskiwania vimrc więcej niż jeden raz.

Działa to dobrze z vim-eunuch, który pozwala na zmianę nazwy pliku za pomocą :Rename.

Matthias Braun
źródło