Cela se produit, car généralement Vim bascule vers l'écran alternatif et y travaille. En quittant, Vim reviendra et donc vous ne verrez plus rien de votre session Vim, mais le résultat de la commande exécutée avant même de démarrer Vim.
Cette fonctionnalité est expliquée sur :h xterm-screens
(lien)
Donc, fondamentalement, vous ne voulez pas cela et souhaitez donc désactiver cela. Vous pouvez le faire en définissant :set t_ti= t_te=
les codes de terminal qui effectuent cette opération sur vide.
En mettant tout cela ensemble, vous voudriez démarrer Vim comme ceci:
vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
Nous réinitialisons l' 'more'
option, de sorte que vous ne voyez pas l'invite hit-enter.
Christian Brabandt
la source
less
. Il suffit de le canaliser en moins comme çavim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!' | less
. La mise en page a peut-être été vissée au début (c'est dans mon terminal), mais après avoir appuyé sur <CL>, tout est beau et dandy.vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
, il n'y a qu'un "flash rapide", la commande exit avec le code 0, pas de sortie. Suis-je en train de manquer quelque chose?Nous pouvons également utiliser la
:redir
commande pour rediriger les résultats des commandes vim dans un fichierPar exemple,
Cela redirige la sortie de
scriptnames
dans le fichier "vimout"la source
J'apprécie la réponse fournie par Christian Brabandt mais je pense qu'une meilleure réponse serait de séparer la commande quit en utilisant une autre commande -c comme ceci:
L'utilisation de cette méthode signifie que vous pouvez enchaîner un certain nombre de commandes différentes ensemble, puis utiliser le «q!» Final pour sortir de vim.
la source
Pour les situations où vous avez besoin que vim soit complètement chargé comme si vous l'aviez démarré manuellement, cela fonctionne:
Par exemple, je voulais rediriger la sortie de
:map
vers un fichier à partir du shell, mais je voulais capturer le mappage que vim- airlines crée uniquement après avoir affiché sa tabline (ligne en haut montrant tous les noms de buffers ouverts.) Parce que cela semble faire ceci de manière asynchrone, l'exécution d'une-c
redirection vers un fichier ne lui donnait pas le temps de faire les mappages. Il pourrait y avoir une meilleure façon, mais cela fonctionne pour moi, d'autant plus que j'ai déjàupdatetime
réglé sur100
(0,1 seconde), ce qui affecte la durée avant leCursorHold
déclenchement de l' événement. Par défaut, vim la définit sur 4 secondes.la source