Réponses:
Je suis sûr qu'il existe d'autres moyens de le faire ... mais la commande principale que vous voulez est celle :r[ead]
qui insère le résultat d'une commande dans le tampon.
Donc, pour insérer uniquement le nom du fichier:
:r! echo %
Et pour inclure le chemin complet:
:r! echo %:p
Pour plus d'informations:
:help read
:help filename-modifiers
Le nom de fichier actuel est dans le "%
registre, vous pouvez donc l'insérer (en mode insertion) avec <c-r>%
; le chemin complet peut être inséré avec <c-r>=expand("%:p")
. Vous pouvez en faire une macro si vous l'utilisez souvent. Pour plus d’astuces similaires, voir :h expand
et :h "=
.
<c-r>
spécifie que le caractère suivant est un registre.
"%p
en mode normal ou visuel.
Comme on peut le voir :h registers
, le "%
registre contient le nom du fichier actuel. La :pu[t]
commande insère le contenu d'un registre dans le texte.
Donc, pour insérer le nom de fichier actuel, vous pouvez taper l'un de ces éléments en mode commande:
:put %
ou
"%p
Pour insérer le nom de fichier avec le chemin complet, tapez
:put=expand('%:p')
en mode commande.
Plus d'informations:
:h pu[t]
En tapant, "rp
vous pouvez coller le contenu du registre "r
.
:put "%:p"
ne semble pas fonctionner pour moi. Cela semble fonctionner uniquement avec expand () , comme dans:: :put =expand('%:p')
, ce qui ne le rend pas moins encombrant que <c-r>=expand('%:p')
malheureusement.
Un moyen simple consiste à exécuter:
!!echo %
!!
remplace la ligne en cours par le résultat de la commande qui la suit.
%
est remplacé par le nom du fichier modifié dans la commande, de sorte que ce nom sera effectivement inséré dans le fichier modifié.
Le nom de fichier est celui que vous avez transmis à la commande vi (m) et peut contenir un chemin relatif ou absolu. Si vous souhaitez le supprimer et ne conserver que le nom du fichier, exécutez
!!basename %
Si vous devez le faire fréquemment, il peut être utile de lier une séquence de clés à votre choix, comme indiqué à l' adresse http://vim.wikia.com/wiki/Insert_current_filename.
insère le nom de fichier actuel sans l'extension à la position du curseur, lorsque vous êtes en mode insertion.
:inoremap \fn <C-R>=expand("%:t:r")<CR>
Pour conserver l'extension utiliser:
:inoremap \fn <C-R>=expand("%:t")<CR>
Pour insérer le chemin absolu du répertoire dans lequel le fichier est utilisé:
:inoremap \fn <C-R>=expand("%:p:h")<CR>
Pour insérer le chemin relatif du répertoire dans lequel le fichier est utilisé:
:inoremap \fn <C-R>=expand("%:h")<CR>
Les précédents fonctionnent tous directement vim
pour la session, ou vous pouvez les mettre dans le .vimrc
(où le signe deux-points sur la ligne est facultatif).
Je cherchais dans Google un moyen simple d'insérer le nom du fichier actuel (sans chemin ni extension) dans la position actuelle (pas de nouvelle ligne, pas de remplacement de la ligne actuelle). Donc, en combinant les réponses précédentes et ce lien , voici ce que je cherchais.
En mode insertion :
<C-R>=expand("%:t:r")
Puis la prochaine fois (avec la commande déjà dans l'historique):
<C-R>=<UP>
<c-r>
la commande redo n'est-elle pas mappée?