Exibir o nome do arquivo atual no vim?


157

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


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.


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

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.


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.


5

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


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'))}\ %*

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.


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ã :)


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.


'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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.