Exibir o nome do arquivo atual no vim?

157

Como você exibe o nome do arquivo no qual está trabalhando no vim?

Drew LeSueur
fonte
1
Se o seu terminal estiver configurado corretamente, você deverá obter o nome do arquivo no título da janela.
Cascabel
2
ctrl + g é possível mostrar as informações do arquivo
Dhiren Hamal

Respostas:

200

:f( :file) fará o mesmo que <C-G>. :f!fornecerá uma versão não truncada, se aplicável.

sorrindo
fonte
2
Legal, mas é possível mostrá-lo na barra superior do terminal? (ou terminador) ou em algum lugar sem digitar um comando.
EMarine
21
:f!nem sempre funciona, pressione 1 e, em seguida, pressione Ctrl-G para obter o caminho completo.
ives 14/06
1
Que tal um caminho completo? Quando inicio o vim ~/dev/file.pye execure :fno vim, recebo file.pycomo saída em vez de ~/dev/file.py.
gxyd
1
@ives o que 1 e Ctrl + g significam separadamente?
jobima 10/01/19
2
@jobima: modifica ctrl-gpara retornar o caminho + arquivo. :fretornará o nome do arquivo sem o caminho, como pode ctrl-g. Um 1antes ctrl-gmostrará o caminho e o nome (embora não necessariamente expandido). ou seja, será exibido em ~/dev/file.pyvez de file.py. 2seguido por ctrl-gincluirá que tampão: buf 1: "~/dev/file.py".
ives
71

ctrl+ gfará isso.

Além disso, eu gosto de ter:

set statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L"

Qual produz:

foo.c [C] [0x23] <código / foo.c 1, 1 2% de 50

Além disso, como alguém mencionado (mas agora excluído) %será substituído pelo nome do arquivo atual. Por exemplo:

:! echo "arquivo atual:%"
arquivo atual: foo.c
Pressione ENTER ou digite o comando para continuar
David Wolever
fonte
2
O que significam as peças [C]e [0x23]?
LangeHaare
@LangeHaare Filetype e valor hexadecimal de carácter sob o cursor respectivamente
'statusline'é uma cadeia, mas você não incluir aspas no set: set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ linesespaços também precisa escaparam
D. Ben Knoble
18

defina a linha de status. mais informações com:help statusline

Esses comandos podem ir no seu arquivo .vimrc ou você pode inseri-los como comandos enquanto estiver no vim, digitando ':' no modo de comando.

Primeiro, defina o último status como 2 usando o seguinte:

set laststatus=2

Em seguida, defina a linha de status como% f para o nome curto do arquivo.

set statusline=%f

Para o caminho completo do arquivo, use% F.

Brian Clements
fonte
E518: Opção desconhecida:% f
Isius
Eu atualizei a resposta, Isius. Espero que isso torne mais claro.
Brian Clements
5

:set title para exibir o nome do arquivo na barra de título da janela.

Ryan Le
fonte
5

Por que tão complicado? Control-G fará o trabalho

sean
fonte
4

Para mostrar o caminho completo de qualquer arquivo, incluindo links simbólicos resolvidos, use o seguinte.

:echo resolve(expand('%:p'))

Isso pode ser adicionado à sua barra de status adicionando a linha abaixo ao seu ~./vimrc

set statusline +=%{resolve(expand('%:p'))}\ %*
joelostblom
fonte
2

Uma das sugestões acima teve que ser alterada para

set statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ lines

para fazê-lo funcionar. Além disso

set laststatus=2

foi usado.

cucujoidea
fonte
Bem-vindo ao Stack Overflow ! Provavelmente, essa deve ser uma edição ou comentário sugerido para a (s) resposta (s) relevante (s) - você ainda não tem reputação suficiente para comentar ou editar, mas em breve o fará se fizer boas perguntas e escrever boas respostas! Enquanto isso, vou sugerir as correções relevantes para os autores das respostas. Boa pegada!
D. Ben Knoble 13/07/19
1

Eu uso o incrível vimrcda amix: https://github.com/amix/vimrc

Ele usa o lightline.vimpluging e exibe o nome do arquivo na barra de status.

O melhor de usar o amix/vimrcé que este plug-in cuida da maior parte da personalização, é muito estável e foi testado por milhares de pessoas, como você pode verificar olhando o número de estrelas do github .. e os problemas pouco frequentes.

Também é atualizado com bastante frequência.

PS: não é o autor de nenhum dos plugins .. apenas um fã :)

alpha_989
fonte
1

Eu também precisava colocar isso no meu arquivo .vimrc:

set noruler
set laststatus=2

Então eu poderia colocar algo como set statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L"no meu arquivo .vimrc e depois de reiniciar o meu terminal, a linha de status é exibida corretamente.

Alex Fenwood Hughes
fonte
'statusline'é uma cadeia, mas você não incluir aspas no set: set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ linesespaços também precisa escaparam
D. Ben Knoble