Comment puis-je afficher le chemin d'accès au fichier actuel dans la ligne de commande, afin de taper un nom de fichier similaire? Je ne veux pas d'une abréviation qui serait remplacée par le nom du fichier actuel, je veux modifier le nom du fichier, avec son chemin de répertoire. Par exemple, je veux :edit
un fichier avec un nom similaire, ou dans un répertoire similaire, par exemple
vim src/submodule/frontend/frobnicate2.c
et maintenant je veux éditer ../trunk/src/submodule/frontend/frobnicate.c
, et je veux seulement insérer ../trunk
et supprimer le 2
, pas retaper le chemin complet.
Je peux bien sûr revenir au shell et utiliser son historique de commandes, ou je pourrais copier-coller le chemin via l'interface graphique, mais je cherche un moyen plus efficace qui ne nécessite pas de quitter Vim.
la source
Ctrl-r =expand('%:p')
. Cela utilise le registre = .Si vous avez défini votre
path
variable vim , vous avez toute la puissance de la:find
commande, à savoir la complétion par tabulation des noms de fichiers (sans avoir besoin de spécifier la partie répertoire!)Dans votre cas, quelque chose comme
peut être tout ce dont vous avez besoin pour
:fin frob<tab>
travailler. Pour les détails sordides,:help find
,:help file-searching
.la source
Voici une cartographie que vous pouvez essayer:
Cela enregistre la commande en cours, puis définit le registre «a» sur le nom du fichier en cours. Ensuite, la dernière commande est rappelée et ajoutée avec le contenu du registre «a». Bien sûr, si vous avez quelque chose d'utile dans le registre «a», cela le remplacera.
Vous souhaiterez peut-être remplacer les caractères mappés par autre chose. J'aime utiliser la touche Alt mais cela ne fonctionne pas dans certains terminaux.
Comme l'a souligné Carpetsmoker dans sa réponse, vous pouvez remplacer l'appel de fonction par
pour forcer le chemin complet.
la source
a
. Essayez plutôt quelque chose comme ceci:cnoremap <M-q> <C-r>=fnameescape(expand('%:p'))<CR>