En vim, quand j'utilise
:r !ls somefilename
il insère la sortie de cette commande sur une nouvelle ligne sous la ligne actuelle.
Si je fais
let @a = system("ls")
et ensuite
"ap
il insère toujours la sortie sur une nouvelle ligne sous la ligne actuelle.
Existe-t-il un moyen de créer une sortie d'insertion vim à l'emplacement actuel?
command-line
vim
deshmukh
la source
la source
Réponses:
Vous pouvez coller le contenu du tampon du presse-papiers entre les caractères avec Ctrl-R * en mode insertion (et une approche similaire pour les autres tampons). Donc, si vous pouvez obtenir la commande système dans un tampon, vous devez être défini. (Source: https://stackoverflow.com/questions/1491135/paste-multi-line-string-into-gvim-at-cursor-position ).
:let @a=system("ls -l")
mettra la sortie dels -l
dans le registrea
. Vous pouvez ensuite le coller (en mode insertion) avec^R-a
.la source
*
), donc si vous dirigez la sortie de votre commande vers votre presse-papiers,"*
vous pourrez l'utiliser.va lire la sortie de la commande et l'insérer dans la ligne sous la ligne actuelle. C'est ainsi que vi est programmé, vous ne pouvez pas changer le comportement.
Mais dites si vous êtes sur la ligne numéro 3. Si vous essayez
:r !date
. Il insérera la valeur de la date dans la ligne numéro 4.Si vous souhaitez que la valeur de date apparaisse sur la ligne numéro 3, vous essayez d'
:2r !date
insérer la valeur de date dans la ligne numéro 3.la source
Voici une autre façon de coller la sortie d'une commande externe avant le curseur:
ou utilisez expression register (
:help @=
):puis frappez P. Ou de façon plus courte en:
la source
:exe
) qui peut être incluse dans les commandes.