web-dev-qa-db-fra.com

Comment savoir quel fichier est actuellement ouvert dans vim?

Cela peut sembler trivial mais, à plusieurs reprises, je me suis retrouvé à avoir oublié quel fichier dans vim j'ai ouvert (par exemple lorsque je regarde à travers différents fichiers journaux et autres) et la seule façon dont je savais comment découvrir était de fermer le fichier et de rechercher dans l'historique des commandes la commande la plus récente.

Existe-t-il une commande dans vim pour vous indiquer le fichier que vous avez ouvert sans quitter le programme ou le fichier que vous avez ouvert (par exemple :<which_file_cmd>?)

66
amphibient

En plus de réponse de uprego , vous pouvez appuyer sur Ctrl+G (en mode normal) pour obtenir le nom du tampon actuel ainsi que le nombre total de lignes qu'il contient et votre position actuelle à l'intérieur.

Mise à jour

Selon commentaire de rxdazn , vous pouvez appuyer sur 1 avant Ctrl+G pour obtenir le chemin d'accès complet au fichier. Si vous appuyez sur 2, vous obtenez le chemin complet du fichier et le numéro de tampon actuellement ouvert (utile lorsque vous avez ouvert plusieurs fichiers avec vim).

81
Joseph R.

Quand dans vim j'utilise toujours le :ls commande.

Exemple

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

blah.txt est le nom du fichier.

26
slm
:f

donne le nom du fichier actuellement ouvert.

24
mtk

Lorsque vim n'est pas appelé avec many args, :args est utile.

8
41754

Si vous pouvez avoir un fichier de configuration vim par défaut, vous pouvez ajouter un statusline pour toujours avoir les détails du fichier disponibles. Je comprends que si vous vous connectez constamment à différents serveurs, cela ne vous sera pas d'une grande aide. Voici mon un peu complexe tiré de mon .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

Et cela ressemble à ceci dans MacVim (mais fonctionne également dans les terminaux). enter image description here

Comme toujours, vous pouvez faire :help statusline pour obtenir plus d'options et de détails. Et passez à la caisse Apprendre Vim à la dure ch 17 pour une bonne explication de la ligne de statut.

4
jmathew

Il y a aussi :echo @%, qui vous donne le nom du fichier par rapport au répertoire courant.

2
kojiro

Je mon vimrc j'ai cette cartographie

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

Donc, si je tape ,pfn, ou "nom du fichier d'impression", il fait écho à l'ensemble du chemin du fichier.

1
Philip

Il existe d'innombrables façons d'obtenir ce genre d'informations, mais si vous voulez quelque chose pour que vous n'ayez qu'à appuyer sur une touche et que le nom du fichier s'affiche, insérez ce qui suit dans votre ~/.vimrc:

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

Cela dit,

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

Et la commande file, comme cela est probablement apparent, renvoie le nom du fichier actuel avec d'autres informations.

Vous pouvez également configurer une ligne d'état afin que vous n'ayez même pas à faire autre chose que regarder.

Pour conserver la ligne d'état, insérez toujours ce qui suit dans votre ~/.vimrc:

set laststatus=2

Cela indique à ViM d'afficher toujours une ligne d'état, les autres options sont 0, pour jamais, et 1 uniquement lorsque deux fenêtres ou plus sont ouvertes dans ViM.

1
Alexej Magura

Je tape simplement :e et cela me montre aussi le chemin complet du fichier et le nombre de lignes et de caractères.

Avertissement: il rouvre le fichier à partir du disque essentiellement, il est donc plus utile lorsque le fichier est déjà enregistré.

:help :e dit:

                          *: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.
1
David d C e Freitas