Sur la ligne de commande, <C-u>
tapez puis tapez @*
et entrez.
<C-u>
supprimera la plage visuelle '<,'>
qui a été automatiquement insérée si du texte est sélectionné visuellement.
:@*
exécutera le contenu du *
registre qui contient tout ce qui est actuellement sélectionné visuellement.
Même si le texte qui est sélectionné / mis en évidence se trouve dans votre navigateur web (firefox, chrome, ...), cela fonctionnera, le *
registre vous permettra d'y accéder directement dans vim.
Si votre texte est sélectionné dans un tampon de vim, une autre solution est de le copier dans un registre nommé, par exemple un registre en tapant "ay
.
Ensuite, sur la ligne de commande, tapez: <C-r>a
et entrez.
Ctrl+ rvous donnera une sorte d'invite représentée par le caractère "
(pour plus d'informations, lisez :h c_Ctrl-r
).
À cette nouvelle invite, si vous donnez le nom d'un registre, son contenu sera inséré sur la ligne de commande, où vous pourrez le modifier avant l'exécution.
En outre, si vous copiez du texte sans spécifier de registre, il sera accessible depuis le registre sans nom " .
Supposons donc que vous ayez une ligne de vimscript dans un fichier et que vous vouliez la source rapidement, vous pouvez la copier avec Y
, puis la source sur la ligne de commande avec: :<C-r>"
et entrez.
Enfin, si vous utilisez cette dernière solution, il y a juste un problème dont vous devez être conscient.
Si vous voyez un caractère étrange sur la ligne de commande comme celui ^M
-ci, c'est la notation caret du retour chariot. Vous devez le supprimer, sinon vous obtiendrez probablement une erreur.
En résumé, vous:
- copiez votre ligne de vimscript avec
Y
- passer en mode commande avec
:
- appuyez
<C-r>
pour entrer dans l'invite des registres
- tapez
"
pour appeler le registre sans nom
- appuyez sur retour arrière pour supprimer le
^M
caractère
- et appuyez sur Entrée.
@*
auparavant, merci!: <C-r>a
ce fait a bien fonctionné aussi :) Je suppose que vim lire les^M
« s comme retours à la ligne - et exécuté chacun comme sa propre ligne individuelle / commande?En fait, je le fais un peu différemment, je fais juste les modifications dans mon vimrc et je le ressaisis chaque fois que je l'écris. (J'ai un ensemble de fichiers vimrc en cascade, ce qui me permet de modifier l'un d'eux.)
la source
Plus directement à la question que mon autre réponse, vous pouvez définir un mappage comme celui-ci (
nnoremap
pour aucune sélection, il suffit d'exécuter la ligne actuelle;vnoremap
lorsque le mode visuel est actif):Dans les deux cas, la "ligne actuelle" est
:execute
d, donc dans la version visuelle, vous:execute
générez une ligne après l'autre à travers la sélection visuelle.Comme indiqué dans une autre réponse, le
<C-u>
supprime la spécification de plage qui apparaît dans la ligne de commande lors de la :frappe. Les|
caractères doivent être échappés car sinon ils sont interprétés comme la fin de lavnoremap
commande.Cela pourrait également être transformé en une fonction pour se débarrasser d'une partie de la gymnastique d'échappement, mais cela ne semble pas être une énorme victoire pour moi en ce moment. Ce serait essentiellement le vnoremap développé en plusieurs lignes et
call
édité avec une plage ou non selon le mode de mappage [nv].la source