271 votes

Tirer sur le nom de fichier / chemin d’accès du tampon courant dans Vim

En supposant que le tampon courant est un fichier est ouvert pour modification, si ne s’affiche pas .

Je tiens à tirer sur l’un ou l’ensemble des :

  • Le nom de fichier exactement comme montrer sur la ligne d’État, par exemple``
  • Un chemin d’accès complet au fichier, par exemple``
  • Juste le fichier nommer, par exemple``

298voto

JD. Points 1546

Essayez ceci :

: let @ » = expand("%")

Ceci copiera le nom du fichier dans le registre unamed, alors vous pouvez utiliser le bon vieux « p » pour le coller. et bien sûr, vous pouvez mapper ce une clé pour une utilisation plus rapide.

: nmap cp : let @ » = expand("%")

vous pouvez également l’utiliser pour le chemin d’accès complet

: let @ » = expand("%:p")

utiliser : aider à étendre pour plus de détails

136voto

dwc Points 12676

Presque ce que vous demandez et il pourraient faire : `` tire le nom de fichier actuel où vous êtes (invite de commandes, tampon d’édition,...). Pour en savoir plus, voir Cette astuce pour Vim .

125voto

Anthony Panozzo Points 890

Si vous voulez mettre le tampon courant de nom de fichier dans votre système au niveau du presse-papiers, essayez de modifier le registre pour @+:

" relative path
:let @+ = expand("%")

" full path
:let @+ = expand("%:p")

" just filename
:let @+ = expand("%:t")

Edit 20140421: J'ai souvent utiliser, de sorte que j'ai créé quelques raccourcis. Linux Vims apparemment fonctionnent légèrement différemment de Mac Vims, donc il existe un cas particulier. Si vous placez le code suivant dans votre ~/.vimrc:

" copy current file name (relative/absolute) to system clipboard
if has("mac") || has("gui_macvim") || has("gui_mac")
  " relative path  (src/foo.txt)
  nnoremap <leader>cf :let @*=expand("%")<CR>

  " absolute path  (/something/src/foo.txt)
  nnoremap <leader>cF :let @*=expand("%:p")<CR>

  " filename       (foo.txt)
  nnoremap <leader>ct :let @*=expand("%:t")<CR>

  " directory name (/something/src)
  nnoremap <leader>ch :let @*=expand("%:p:h")<CR>
endif

" copy current file name (relative/absolute) to system clipboard (Linux version)
if has("gui_gtk") || has("gui_gtk2") || has("gui_gnome") || has("unix")
  " relative path (src/foo.txt)
  nnoremap <leader>cf :let @+=expand("%")<CR>

  " absolute path (/something/src/foo.txt)
  nnoremap <leader>cF :let @+=expand("%:p")<CR>

  " filename (foo.txt)
  nnoremap <leader>ct :let @+=expand("%:t")<CR>

  " directory name (/something/src)
  nnoremap <leader>ch :let @+=expand("%:p:h")<CR>
endif

Par exemple, <leader>cf copie le chemin d'accès relatif du tampon courant (la valeur par défaut est le leader de barre oblique inverse (\)). J'ai souvent de les utiliser pour exécuter des commandes sur un fichier ou d'autres choses à faire sur la ligne de commande. Je n'utilise pas vraiment le dernier nom de fichier / nom du répertoire souvent.

Vous pourriez envisager de plus intuitive mappages comme <leader>cfr par rapport, <leader>cfa d'absolu, <leader>cff juste pour le nom de fichier, <leader>cfd pour le répertoire.

4voto

bat Points 5380

La combinaison d'informations à partir d'un couple de d'autres réponses: Si vous voulez tirer l'actuel chemin d'accès complet à un fichier et le mettre dans la mémoire tampon de commande dans une autre fenêtre, le premier n' :let @" = expand("%:p"), puis passer à une autre fenêtre et tapez Ctrl+R ".

Utile pour copier un fichier, tout en restant dans le même répertoire, et en gardant l'ancien ouvrir. Par exemple:

Démarrer: l'Édition src/com/benatkin/paint/shapes/Circle.java

  1. Type :let @" = expand("%:p") (Le chemin s'arracha à la principale tampon du presse-papiers.)

  2. Ouvrir une nouvelle fenêtre avec :sp

  3. Type :e Ctrl+R"

  4. Utilisez les touches fléchées pour revenir à Cercle et de le changer de Place, et appuyez sur <CR>

Fin: l'Édition src/com/benatkin/paint/shapes/Square.java

-1voto

user189557 Points 1

J’ai utiliser XDELIM pour accéder à x presse-papiers, donc j’utilise :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X