J'utilise :r !uuidgen
fréquemment pour insérer un nouvel uuid dans le tampon. Cela fonctionne, mais j'essaye généralement d'insérer l'uuid entre les guillemets et d' :r !uuidgen
imprimer l'uuid sur une nouvelle ligne.
Pour contourner ce problème, j'utilise actuellement un simple clavier:
nnoremap <C-u> mm:r!uuidgen<CR>dW"_dd`mp
Cette macro définit la marque mm
, insère l'uuid r!uuidgen
, supprime l'uuid inséré dW
, supprime la ligne supplémentaire "_dd
, revient à la marque BACKTICKm
et enfin colle l'uuid p
.
Existe-t-il un moyen de :r
redresser le curseur sans cette macro / liaison de touches qui gaspille un registre?
Réponses:
Vous pouvez utiliser le registre d'expression
"=
etsystem()
:Cela ressemblerait à cela dans un mappage en mode insertion:
ou, avec un mappage d'expression:
la source
Depuis le mode insertion, vous pouvez appuyer sur Ctrl-R, puis taper:
Notez que cela ajoutera une nouvelle ligne de fin, car c'est ce qui
uuidgen
sort; pour résoudre ce problème, nous pourrions utiliser:Pour supprimer la nouvelle ligne.
De
:help i_CTRL-R
:Pour lier cela à Ctrl-uvotre exemple, vous pouvez utiliser:
la source
Un de plus, avec
:python
:Vous pouvez mapper comme:
Les UUID sont générés par le module Python UUID .
la source
C'est peut-être moins préférable que d'utiliser une solution pure-vim, cependant, si vous utilisez un gestionnaire d' extraits de code comme Ultisnips, vous pouvez essayer d' ajouter un extrait de code tel que le suivant:
De cette façon, vous pouvez taper
uuid
et frapper votre déclencheur de développement en mode insertion etuuid
sera remplacé par la sortie de la commande shell appropriée. Bien sûr, cela peut être facilement adapté pour d'autres commandes et développé de manière puissante comme indiqué dans la documentation Ultisnips.la source