Como exibir o nome do arquivo que estou editando no vim no título do terminal?

20

Estou editando vários arquivos localizados na mesma pasta, em várias guias, em um único terminal.

pwd(diretório em que estou trabalhando atualmente) é exibido na parte superior do cabeçalho do terminal, mas não o nome do arquivo que estou editando. Fica confuso ao trabalhar com vários arquivos no mesmo diretório.

Como exibir o nome do arquivo atual na parte superior do terminal, além do pwd.

Estou executando vimem um shell bash gnome-terminal, no 12.04 LTS.

Malhar
fonte
11
Editando usando qual editor? Em qual concha? Qual emulador de terminal?
terdon
@terdon - Edição usando o Vim, o bash Shell e o emulador xterm
malhar
2
Por favor, edite sua pergunta para adicionar informações extras, é difícil de ler e fácil de perder nos comentários. Em seguida, você pode executar ping no usuário que solicitou as informações deixando um comentário e incluindo um @antes do nome de usuário. Por exemplo, para me Ping: @terdon.
terdon
xtermnão tem guias. Tem certeza de que é isso xterm? echo $TERMnormalmente não retorna o nome do seu emulador de terminal se foi o que você fez.
terdon
@terdon Sim, eu usei echo $ TERM. emite "xterm". Estou usando o terminal padrão ubuntu 12.04 LTS de 64 bits. Existem outras maneiras de verificar os detalhes do emulador.
malhar

Respostas:

13

Você deve ter / criar um arquivo nomeado .vimrcem seu diretório pessoal com o seguinte código:

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

insira a descrição da imagem aqui

Fonte: gnome-terminal não permite alterar o título

Radu Rădeanu
fonte
Para criar ^ [, que é escape, você precisa inserir CTRL + V <Esc>
tinmarino
8

A resposta atual (aceita) não funcionará se você alternar arquivos / buffers em uma de suas sessões do vim. O título não será atualizado.

O seguinte é o suficiente para ter títulos atualizados automaticamente no gnome-terminal também quando muda arquivos usando :e foo.txt, :b0, :b#, etc.

Basta colocar isso no seu ~/.vimrcarquivo:

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

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

Anne van Rossum
fonte
Não deveria set titleestar na mesma linha, depois |?
Victor Sergienko
Relacionado à pergunta: para restaurar o título após sair do vim, adicione set titleold=a .vimrc.
Victor Sergienko
5

Basta adicionar

set title

para o seu ~/.vimrc.

Título do exemplo: testfile (~ / Documents) - VIM

pauloue
fonte
11
Essa é a resposta única que funcionou para mim e é a mais curta.
user10089632
1

Você pode anexar o nome do arquivo que está editando em uma guia da seguinte maneira:

  1. vá para o menu na parte superior do terminal. Terminal-> Definir Título-> Aqui você anexa o nome do arquivo que está editando no momento

por exemplo, quando você abre o terminal, o cabeçalho do terminal mostra apenas "~". pwd shows / casa / xxx /

Suponha que, neste local, você esteja editando um arquivo ABC.cpp, defina o título da guia como "~ / ABC.cpp" acrescentando "/ABC.cpp" no campo Definir título.

Da mesma forma, você pode repetir isso para outras guias também.

user223882
fonte
4
E você fará essas alterações sempre que editar outro arquivo? Parece doloroso ...
Radu Rădeanu 24/03
0

Isso também altera o título da janela se você renomear um buffer:

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

A colocação do comando em um grupo evita a execução do comando várias vezes ao buscar vimrcmais de uma vez.

Isso funciona muito bem com o vim-eunuch, que permite renomear um arquivo usando :Rename.

Matthias Braun
fonte