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


90

Je sais CTRLgaffiche le fichier actuel sur lequel vous travaillez. Existe-t-il un moyen de modifier mon pour .vimrcque le nom de fichier / chemin soit toujours affiché?

Réponses:


128

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

:help statusline

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

Remarque, %Fsera 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

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


1
Je préfère certainement votre réponse à la mienne, mais ajouter set statusline+=%Fà ma ~/.vimrcne semble pas faire ce que vous dites. Bien que la documentation semble certainement d'accord avec vous ...
Tim Pote

1
Cela n'a eu aucun effet. Toutes mes excuses si je manque quelque chose de simple, avez-vous des idées à ce sujet?
zallarak

1
@TimPote Quelle version de vim? Travaille pour moi. Peut-être que votre ligne de statut la repousse déjà ou limite sa largeur. Essayez juste :set statusline=%Fsans le+
Michael Berkowski

@zallarak Voir mon commentaire à Tim. Votre statut change-t-il si vous le faites simplement :set statusline=%F? Regardez bien à droite ou à gauche pour voir si le nom de fichier se cache là-bas dans la ligne d'état
Michael Berkowski

2
@TimPote Peut-être set laststatus=2pour garder la ligne d'état visible tout le temps. J'ai oublié que j'avais ça.
Michael Berkowski

20

set ls = 2

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


set modeline n'a rien fait pour moi, qu'est-ce qu'il est censé faire? (set ls = 2 a fait quelque chose cependant). Comment puis-je gérer / aider à comprendre cela par moi-même la prochaine fois? Merci! :)
Charlie Parker

1
set modelineest un peu dangereux et n'a rien à voir avec la question. Il permet l'exécution de commandes Vim dans les 5 lignes de début / fin d'un fichier. Il ne devrait être activé que par ceux qui savent pourquoi et le veulent vraiment. (C'est pourquoi je -1 cette réponse)
Dr Beco

16

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 que j'ai récemment écrit.


Le "titre défini" affichera le nom du fichier sur l'onglet du terminal. Fonctionnalité intéressante.
duleshi

Aussi intéressant soit-il, ne répond pas à la question posée. Vous affirmez également que c'est mieux - mais ce n'est peut-être pas le cas. Par exemple, si votre vim est ouvert dans le terminal qui est en mode plein écran, le titre n'est pas visible. Donc vote défavorable.
apprentiDev

8

La seule manière que je trouvais pour obtenir le chemin complet du fichier que je travaille en est: :echo expand('%:p'). Vous pouvez re-mapper ctrl + g si vous le souhaitez, mais personnellement, je n'aime pas trop m'éloigner des normes. J'ai mappé F7 comme ceci:

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

4
:help CTRL-G, et regardez deux paragraphes vers le bas pour CTRL-Gavec count.
Stefan Majewsky

1
Merci, @StefanMajewsky. 1 CTRL-Gaffiche le nom complet du fichier. Je cherchais cette option.
Anton Kiselev

Je t'aime Tim, c'est la seule façon de montrer absolument le chemin absolu, même sans ~.
ryancheung

7

Si vous utilisez vim-airlines , indiquez .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 %fpar défaut de la compagnie aérienne, changeant par %F.


6

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 CTRLGmais il semble que ce soit à peu près la même chose.


5

La ligne de statut est très puissante et pratique je pense. Sortez de la boîte, il affichera le nom du fichier, la position du curseur et quelques drapeaux. Mais vous voulez faire la même chose que moi et remplacer le nom de fichier -part par le chemin complet du fichier.

Ainsi, lors de la modification de mon .vimrcstatut, ma ligne de statut pourrait ressembler à ceci par défaut:

.vimrc                                                        26,16           7%

Vous pouvez afficher vos paramètres de la ligne d'état avec:

:set statusline?

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

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

Alors incluez ceci dans votre .vimrcet changez %fen %F. J'ai également ajouté le drapeau de type de fichier ( %y) à ma ligne de statut car je le trouve 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


4

Si vous souhaitez que le chemin inclue des 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')),':~')}\ %*

Les deux ont fonctionné pour moi dans VIM 7.4 en utilisant iTerm2 à SSH dans Ubuntu 16.04 LTS
James Nicholson
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.