web-dev-qa-db-fra.com

Comment afficher en permanence le chemin du fichier actuel dans Vim?

Je sais CTRLg affiche le fichier actuel sur lequel vous travaillez. Existe-t-il un moyen de modifier mon .vimrc de telle sorte que le nom/chemin du fichier soit toujours affiché?

86
zallarak

Dans votre ligne d'état, ajoutez un %F pour afficher le chemin complet:

:help statusline

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

Remarque, %F sera le chemin complet. Pour obtenir un chemin relatif au répertoire de travail, utilisez %f.

Si votre ligne d'état n'est pas déjà visible, vous devrez peut-être d'abord la configurer pour qu'elle soit toujours visible, via laststatus=2

set laststatus=2

Voir :help laststatus pour ce que signifient les options. Normalement, la ligne d'état peut être cachée ou cachée à moins que plusieurs tampons ne soient ouverts, mais je trouve extrêmement utile d'avoir tout le temps avec des personnalisations comme celle-ci, cela vaut la peine de renoncer à une réserve de ligne d'écran.

125

définir ls = 2

ajoutez-le dans vimrc, et vous verrez toujours le nom du fichier en bas.

18
SD.

J'ai trouvé 2 façons d'afficher le chemin du fichier dans la barre de titre du gnome-terminal lors de l'édition d'un fichier avec Vim.

La manière la plus simple (et la meilleure): ajoutez la ligne suivante à votre ~/.vimrc:

set title

Ce qui vous montrera en haut:

filename.ext (~/path_to_directory_where_your_file_is/) - VIM

La manière la plus compliquée vous montrera le chemin absolu du fichier. C'est documenté un peu plus en détail dans ce billet de blog J'ai récemment écrit.

16
sampson-chen

Le seul moyen que j'ai trouvé pour obtenir le chemin complet du fichier dans lequel je travaille est: :echo expand('%:p'). Vous pouvez remapper ctrl + g si vous le souhaitez, mais personnellement, je n'aime pas trop m'éloigner des normes. J'ai cartographié F7 comme ceci:

map  <F7> <Esc>:echo expand('%:p')<Return>
7
Tim Pote

J'ai toujours utilisé :f, mais la réponse et les liens de @MichaelBerkowski sont incroyables!

:f affiche le chemin, le nombre de lignes, l'état modifié, la position actuelle du curseur, etc.

Je ne savais pas CTRLG mais il semble être à peu près la même chose.

6
jahroy

Si vous utilisez vim-airlines , entrez .vimrc:

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

Il s'agit d'une modification de la valeur par défaut de la compagnie aérienne, modifiant %f par %F.

5
phcerdan

La ligne d'état est très puissante et pratique je pense. Strait out of the box, il affichera le nom du fichier, la position du curseur et certains drapeaux. Mais vous voulez faire la même chose que moi et remplacer la partie du nom de fichier - par le chemin complet dans le fichier.

Donc, lors de l'édition de mon .vimrc ma ligne d'état pourrait ressembler à ceci par défaut:

.vimrc                                                        26,16           7%

Vous pouvez afficher votre configuration de la ligne d'état avec:

:set statusline?

Mais si vous n'avez apporté aucune modification et qu'aucun module ne l'a changé, il sera vide. Mais par les exemples de la section d'aide (:help statusline) vous pouvez constater que la valeur par défaut est:

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

Incluez donc ceci dans votre .vimrc et changez %f à %F. J'ai également ajouté le drapeau de type de fichier (%y) à ma ligne d'état car je trouve cela pratique. Donc, ma configuration résultante ressemble à ceci:

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

Et le résultat ressemblerait à quelque chose comme ceci:

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

Bonne lecture:

PS. Je lance vim 7.3

5
UlfR

Si vous souhaitez que le chemin inclue les liens symboliques résolus, utilisez ce qui suit:

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

Pour conserver l'abréviation "~" de votre répertoire personnel, incluez fnamemodify

set statusline +=%{fnamemodify(resolve(expand('%:p')),':~')}\ %*
4
joelostblom