J'ai essayé de trouver quelque chose qui me permettrait d'exécuter plusieurs commandes sur la même ligne dans Vim, semblable à l'utilisation de points-virgules pour séparer les commandes dans les systèmes * nix ou &
dans Windows. Y a-t-il un moyen de faire cela?
188
;
au lieu de&&
séparer les commandes shell Unix aussi!&&
c'est 'boolean and' dans les commandes shell, donc si vous l'avez faitcommand1 && command2
,command2
ne s'exécutera que s'il estcommand1
exécuté avec succès. avec;
vous simplement spécifier manuellement la fin de cette ligne et démarrer une nouvelle. C'est la même chose que d'écrire chaque commande sur une ligne différente dans un script shell.Réponses:
Un bar
|
vous permettra de le faire. De:help :bar
Exemple:
:echo "hello" | echo "goodbye"
Production:
NB: Vous constaterez peut-être que votre
~/.vimrc
ne prend pas en charge la cartographie|
, ou\|
. Dans ces cas, essayez d'utiliser à la<bar>
place.la source
|
!map
déclaration (et croyez-moi, vous le ferez), vérifiez:help map_bar
..vimrc
ne prend pas en charge une barre d'échappement (\|
) pour les mappages. J'ai appris que je dois vraiment taper<bar>
.:help bar
montre motion.txt et rien sur les commandes multiples.:help <bar>
Mettez
<CR>
(Carriage Return / Enter) entre et après les commandes. Par exemple:Ne pas utiliser
|
parce que:Certaines commandes ont des problèmes si vous les utilisez
|
après elles|
ne fonctionne pas de manière cohérente dans les fichiers de configuration, voir:help map_bar
la source
Vous pouvez définir une fonction qui exécute vos commandes.
Et placez-le, par exemple, dans votre vimrc. Exécutez la fonction avec
la source
:call Func()
car cela:execute Func()
signifie quelque chose de plus. Cela signifie exécuter la valeur de retour de la fonction sous forme de commande. La fonction décrite ici n'aura généralement pas de commande commençant par:return
, donc sa valeur de retour sera le nombre zéro. L'exécution de cette commande déplacera le curseur sur la première ligne du tampon actuel, ce qui n'est pas toujours ce que vous aviez à l'esprit.Le séparateur de commandes dans vim est
|
.la source
J'ai toujours utilisé
^J
pour séparer plusieurs commandes en appuyant sur Ctrl+ v, Ctrl+ j.la source
^J
comme séparateur de commande dans une chaîne car il insère le caractère NULL terminant la chaîne. cependant vous pouvez utiliser <CR> = "\ n".exe "echo 'foo' \n echo 'bar'"
exe "echo 'foo'" . nr2char(0x0a) . "echo 'bar'"
map aa :echo 'foo' <C-V><C-J> echo 'bar'<CR>
Je pensais que cela pourrait aider quelqu'un essayant de faire des substitutions dans une chaîne et l'un échouait
à partir d'un commentaire
Vous pouvez utiliser l'
e
indicateur pour ignorer l'erreur lorsque la chaîne est introuvable.la source
Vous pouvez créer un nouveau fichier et y écrire vos commandes. Ensuite
:so %
, ce qui signifie le fichier courant source.la source