Como descobrir qual arquivo está atualmente aberto no vim?

54

Isso pode parecer trivial, mas, em mais de uma ocasião, eu me vi esquecendo qual arquivo em vim eu tenho aberto (por exemplo, quando estou procurando arquivos de log diferentes e tal) e a única maneira que eu sabia descobrir foi fechar o arquivo e procurar no histórico de comandos o comando mais recente.

Existe um comando dentro do vim para lhe dizer qual arquivo você abriu atualmente sem sair do programa ou do arquivo que você abriu (por exemplo, :<which_file_cmd> ?)

    
por amphibient 12.12.2013 / 18:28

9 respostas

72

Além da resposta do uprego , você pode pressionar Ctrl + G (no modo normal) para obter o nome do buffer atual, bem como o número total de linhas nele e sua posição atual dentro dele.

Atualizar

Como por Comentário de rxdazn , você pode pressionar 1 antes de Ctrl + G para obter o caminho completo do arquivo. Se você pressionar 2 , você obtém o caminho completo do arquivo e o número do buffer que você tem atualmente aberto (útil quando você abriu vários arquivos com vim ).

    
por 12.12.2013 / 18:32
22

Quando em vim eu sempre uso o comando :ls .

Exemplo

:ls
  1 %a   "blah.txt"                         line 1

Onde blah.txt é o nome do arquivo.

    
por 12.12.2013 / 19:31
18
:f

fornece o nome do arquivo atualmente aberto.

    
por 18.12.2013 / 17:16
7

Quando vim não é chamado com muitos argumentos, :args é útil.

    
por 12.12.2013 / 18:33
4

Se você pode ter um arquivo de configuração vim padrão, você pode adicionar um statusline para ter sempre os detalhes do arquivo disponíveis. Eu entendo que se você estiver constantemente remotamente em servidores diferentes, isso não ajudará muito. Aqui está meu um pouco complexo tirado do meu .vimrc.

" %F(Full file path)
" %m(Shows + if modified - if not modifiable)
" %r(Shows RO if readonly)
" %<(Truncate here if necessary)
" \ (Separator)
" %=(Right align)
" %l(Line number)
" %v(Column number)
" %L(Total number of lines)
" %p(How far in file we are percentage wise)
" %%(Percent sign)
set statusline=%F%m%r%<\ %=%l,%v\ [%L]\ %p%%

" Change the highlighting so it stands out
hi statusline ctermbg=white ctermfg=black

" Make sure it always shows
set laststatus=2

E se parece com isso no MacVim (mas também funciona nos terminais).

Comosempre,vocêpodefazer:helpstatuslineparaobtermaisalgumasopçõesedetalhes.Econfira Aprendendo Vim the Hard Way ch 17 para uma boa explicação da linha de status.

    
por 12.12.2013 / 22:51
1

Há também :echo @% , que fornece o nome do arquivo em relação ao diretório atual.

    
por 13.12.2013 / 00:19
1

Existem inúmeras maneiras de obter esse tipo de informação, mas se você quiser algo, basta pressionar uma tecla e o nome do arquivo será exibido. Em seguida, insira o seguinte no seu ~/.vimrc :

map <F4> <ESC>:file<CR>

Isso diz:

bind the 'F4' key to the following sequence: Escape-key, :file, Carriage-Return (enter-key)

E o comando file , como é evidente, retorna o nome do arquivo atual juntamente com outras informações.

Você também pode configurar uma linha de status para que você não tenha que fazer nada além de olhar.

Para manter a linha de status, insira sempre o seguinte no seu ~/.vimrc :

set laststatus=2

Isso indica ao ViM para exibir sempre uma linha de status, outras opções são 0 , para nunca e 1 somente quando você tem duas ou mais janelas abertas no ViM.

    
por 13.12.2013 / 01:25
1

Normalmente, só digito :e e isso me mostra o caminho completo do arquivo e o número de linhas e caracteres também.

Caveat : ele reabre o arquivo do disco essencialmente, então é mais útil quando o arquivo já está salvo.

:help :e diz:

                          *:e* *:edit*
Edit the current file.  This is useful to re-edit the
current file, when it has been changed outside of Vim.
This fails when changes have been made to the current
buffer and 'autowriteall' isn't set or the file can't
be written.
    
por 13.12.2013 / 01:38
1

Eu meu vimrc eu tenho esse mapeamento

nnoremap <leader>pfn :echo expand('%:p')<CR>

Portanto, se eu digitar ,pfn ou "print file name", ele mostrará todo o caminho do arquivo.

    
por 13.12.2013 / 07:19

Tags