Como posso exibir permanentemente o caminho do arquivo atual no Vim?

90

Eu sei que CTRLgexibe o arquivo atual em que você está trabalhando. Existe uma maneira de modificar o meu de .vimrcforma que o nome do arquivo / caminho seja sempre exibido?

Zallarak
fonte

Respostas:

128

Em sua linha de status, adicione um %Fpara exibir o caminho completo:

:help statusline

" Add full file path to your existing statusline
set statusline+=%F

Observe, %Fserá o caminho completo. Para obter um caminho relativo ao diretório de trabalho, use %f.

Se a sua linha de status ainda não estiver visível, você pode primeiro precisar configurá-la para estar sempre visível, via laststatus=2

set laststatus=2

Veja o :help laststatusque significam as opções. Normalmente, a linha de status pode estar oculta, ou oculta, a menos que vários buffers estejam abertos, mas acho extremamente útil tê-la sempre ativada com personalizações como essa, vale a pena abrir mão de uma reserva de linha de tela para ela.

Michael Berkowski
fonte
1
Certamente prefiro sua resposta à minha, mas adicionar set statusline+=%Fà minha ~/.vimrcnão parece corresponder ao que você está dizendo. Embora os médicos certamente pareçam concordar com você ...
Tim Pote
1
Isso não teve efeito. Desculpas se estou perdendo algo simples, você tem alguma opinião sobre isso?
zallarak
1
@TimPote Qual versão do vim? Funciona para mim. Talvez sua linha de status já esteja empurrando ou limitando a largura. Experimente apenas :set statusline=%Fsem o+
Michael Berkowski
@zallarak Veja meu comentário para Tim. A sua linha de status muda se você simplesmente mudar :set statusline=%F? Olhe bem para a direita ou para a esquerda para ver se o nome do arquivo está escondido ali na linha de status
Michael Berkowski
2
@TimPote Talvez set laststatus=2para manter a linha de status visível o tempo todo. Eu esqueci que estava com isso.
Michael Berkowski
20

definir ls = 2

adicione isso no vimrc e você verá o nome do arquivo sempre na parte inferior.

SD.
fonte
set modeline não fez nada por mim, o que deveria fazer? (set ls = 2 fez alguma coisa). Como posso ajudar / ajudar a resolver isso sozinho na próxima vez? Obrigado! :)
Charlie Parker
1
set modelineé um pouco perigoso e não tem nada a ver com a questão. Permite a execução de comandos Vim nas 5 linhas de início / fim de um arquivo. Deve ser ativado apenas por quem sabe por que e realmente deseja isso. (É por isso que eu -1 esta resposta)
Dr. Beco
16

Eu encontrei 2 maneiras de exibir o caminho do arquivo na barra de título do terminal gnome enquanto edito um arquivo com o Vim.

A maneira mais simples (e melhor): adicione a seguinte linha ao seu ~/.vimrc:

set title

Que irá mostrar a você no topo:

filename.ext (~/path_to_directory_where_your_file_is/) - VIM

A maneira mais complicada mostrará o caminho absoluto do arquivo. Está documentado com mais detalhes nesta postagem do blog que escrevi recentemente.

Sampson-Chen
fonte
O "set title" mostrará o nome do arquivo na guia do terminal. Recurso interessante.
duleshi
Por mais interessante que seja, não responde à pergunta feita. Além disso, você afirma que é melhor - mas pode não ser. Por exemplo, se o seu vim está aberto no terminal que está no modo de tela inteira, o título não é visível. Assim, downvote.
apprenticeDev
8

A única maneira que eu encontrei para obter o caminho completo do arquivo que estou trabalhando em é: :echo expand('%:p'). Você pode mapear novamente ctrl + g se quiser, mas eu pessoalmente não gosto de mudar muito dos padrões. Eu mapeei F7 assim:

map  <F7> <Esc>:echo expand('%:p')<Return>
Tim Pote
fonte
4
:help CTRL-G, e olhe dois parágrafos abaixo para CTRL-Gcontar.
Stefan Majewsky
1
Obrigado, @StefanMajewsky. 1 CTRL-Gmostra o nome completo do arquivo. Eu estava procurando por essa opção.
Anton Kiselev
Eu te amo Tim, essa é a única maneira de mostrar absolutamente o caminho absoluto, mesmo sem ~.
Ryancheung
7

Se você estiver usando o vim -irline , coloque .vimrc:

let g:airline_section_c = '%<%F%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#'

Esta é uma modificação do padrão da companhia aérea, mudando %fpor %F.

phcerdan
fonte
6

Sempre usei :f, mas a resposta e os links do @MichaelBerkowski são incríveis!

:f mostra o caminho, contagem de linhas, estado modificado, posição atual do cursor e mais ...

Eu não sabia, CTRLGmas parece ser o mesmo.

jahroy
fonte
5

O statusline é muito poderoso e prático, eu acho. Retirado da caixa, ele exibirá o nome do arquivo, a posição do cursor e algumas bandeiras. Mas você quer fazer o mesmo que eu e substituir o nome do arquivo -part pelo caminho completo para o arquivo.

Então, enquanto edito minha linha de .vimrcstatus, poderia ser parecido com o padrão:

.vimrc                                                        26,16           7%

Você pode visualizar a configuração da linha de status com:

:set statusline?

Mas se você não fez nenhuma alteração e nenhum módulo o mudou, ele estaria vazio. Mas pelos exemplos na seção de ajuda ( :help statusline), você pode descobrir que o padrão é:

:set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P

Portanto, inclua isso em seu .vimrce mude %fpara%F . Também adicionei o sinalizador filetype ( %y) à minha linha de status, pois acho conveniente. Então, minha configuração resultante é assim:

:set statusline=%<%F\ %h%m%r%y%=%-14.(%l,%c%V%)\ %P

E o resultado seria mais ou menos assim:

~/.vimrc [vim]                                                26,16           7%

Boa leitura:

PS. Eu executo o vim 7.3

UlfR
fonte
4

Se você quiser que o caminho inclua links simbólicos resolvidos, use o seguinte:

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

Para manter a abreviatura '~' do seu diretório pessoal, inclua fnamemodify

set statusline +=%{fnamemodify(resolve(expand('%:p')),':~')}\ %*
joelostblom
fonte
Ambos funcionaram para mim no VIM 7.4 usando iTerm2 para SSH no Ubuntu 16.04 LTS
James Nicholson