Est-il possible d'afficher la sortie de la dernière commande dans vim?
Lorsque j'exécute une commande shell il demande de type d'ENTRÉE à la fin et une fois que vous faites la sortie est caché. Est-il un moyen de le voir de nouveau w/o l'exécution de la commande de nouveau?
Aussi quelques commandes internes comme make
également exécuter des commandes externes, et ceux qui ne s'arrête même pas pour ENTREZ donc, si j'ai une erreur dans mon "compilateur" paramètres " de la commande clignote sur l'écran trop vite pour le voir. Comment puis-je voir la commande et sa sortie? (quickfix est vide)
Mise à JOUR
La sortie est CERTAINEMENT encore là. au moins sur le terminal de vim. si j'type
:!cat
la sortie de la commande précédente est toujours là. le problème en est un), il semble trop comme un hack, je suis à la recherche d'un bon vim) b) il ne fonctionne pas dans l'interface graphique de vim
- Si vous n'avez pas l'esprit de l'exécution de la commande de nouveau, vous pourriez le faire avec une seule commande:
nmap <Leader>l :redir @c<CR>:silent <C-r>:<CR>:redir END<CR>:new +put\ c<CR>
Vous devez vous connecter pour publier un commentaire.
il suffit de taper :!
ou vous pourriez essayer SingleCompile
Mettre vim dans l'arrière-plan fonctionne normalement pour moi (appuyez sur Ctrl+Z).
Cela va vous montrer le shell vous avez commencé à vim de et dans mon cas, je peux voir la sortie de toutes les commandes que j'ai couru dans vim via ":!somecommand".
C'est en supposant que vous avez exécuté vim à partir d'un shell, pas l'interface graphique d'un (gvim).
Avant d'exécuter une commande, vous pouvez rediriger la sortie vers un fichier, registre, la sélection, le presse-papiers ou de la variable. Pour moi, la redirection vers un registre est la solution la plus pratique.
Pour démarrer la redirection de s'inscrire
a
, utilisezVous exécuter vos commandes, dites
Et à la fin de rediriger avec
C'est tout, registre
a
contient maintenant la sortie de l'redirigé commandes. Vous pouvez le visualiser avec:reg a
ou mis dans un tampon avec"ap
, comme vous le feriez normalement avec un registre.Lire l'aide pour
:redir
pour en savoir plus sur les différentes façons de les rediriger.Après des mois, j'ai trouvé un fichier d'aide que vous pourriez être intéressés de prendre un coup d'oeil: messages.txt.
Quoique incomplet, ça aide beaucoup. Il existe une commande (nouveau pour moi) appelé
g<
qui affiche le dernier message, mais apparemment, seuls les Vim messages, comme[No write since last change]
.Tout d'abord, je vous suggère de prendre un coup d'oeil dans les paramètres de votre
'shm'
, et essayez de faire vos commandes de sortie plus persistante (le "Hit ENTER" apparaissant le plus souvent). Ensuite, vérifier si ce fichier d'aide aide 🙂 je ne pouvais pas le faire fonctionner à 100%, mais a été un grand progrès.redir
ne contient que des:!ls -l
et quelques lignes vides, mais le résultat réel de la commande.:copen
?J'ai l'habitude de sortir de la coquille à l'aide de
:sh
et qui va vous montrer la sortie à partir de toutes les commandes qui a été exécuté et n'a pas de sortie redirigée.Il suffit de fermer la coque et vous serez de retour à l'intérieur de vim.
Faites défiler vers le haut (testé sur iTerm 2). Remarque: ceci peut ne pas fonctionner en fonction de votre configuration à vim..
Exemple: je suis sur le point de lancer
!rspec --color %
de mon vim.Le tampon est rempli avec de la sortie.
Maintenant, après avoir atteint
ENTER
, vous pouvez faire défiler jusqu'à voir la sortie précédente.peut-être que les gars sont en oubliant le :r
Mettre cette où mon curseur est:
Un simple u peut se débarrasser du nouveau texte après je tirer ou que ce soit;
Pourquoi je n'utilise pas
:!
, et de plus, quelle est l'alternativeJ'apprends le
:!
de la actuellement la réponse choisie (et je upvoted il). Il fonctionne, en ce sens qu'il fait afficher l'écran précédent.Cependant, l'autre jour, j'apprends une autre astuce de l'aide
:!!
à ré-exécuter la dernière commande (qui, en passant, est très utile lorsque vous êtes dans un edit-test-edit-test-cycle...). Et puis je me rends compte que, à l'aide de:!
en quelque sorte un effet secondaire de l'oubli de la dernière commande, de sorte qu'à l'avenir les:!!
ne fonctionne pas. Ce n'est pas cool.Je ne comprends pas ce, jusqu'à ce que je prendre une plongée dans les la documentation de vim.
Soudain, tout commence à prendre un sens. Nous allons examiner dans cette séquence:
:!make foo bar baz tons of parameters
et de voir sa sortie, plus tard, de revenir à vim.:!!
, la deuxième!
sera remplacé par la dernière commande externe, de sorte que vous aurez exécutermake foo bar baz tons of parameters
une fois de plus.:!
, vim va encore le traiter comme "start a (nouveau) commande externe", c'est juste que la commande s'avère être VIDE. C'est donc équivalente à vous tapez une commande vide (c'est à dire appuyer sur la touche ENTER une fois à l'intérieur d'un shell normal). Par la commutation de l'écran en shell, il vous arrive d'obtenir une chance de voir l'écran précédent la sortie. C'est tout.:!!
, vim permet de répéter la dernière commande, mais cette fois, la commande est une commande vide. C'est pourquoi votre vim perd la mémoire pourmake foo bar baz tons of parameters
de sorte que la prochaine fois que vous voulez faire, vous aurez à les saisir de nouveau.Donc, la prochaine question sera, est-il un autre "pure commandes de vim" pour ne montrer que la précédente shell sortie sans gâcher la dernière commande de la mémoire? Je ne sais pas. Mais maintenant, je m'installe pour l'aide CTRL+Z pour apporter vim à l'arrière-plan, montre donc la coque de la console avec la commande précédente sortie, et puis j'type
fg
et ENTRÉE pour revenir à vim. FWIW, leCTRL+Z
solution en fait un de moins de course clé de la:!
solution (ce qui nécessite maj+; maj+1 ENTRÉE pour la commande de l'écran, et un ENTRÉE pour revenir).Trouvé ce script -- qui permettra d'ouvrir un nouvel onglet
Coller dans votre .vimrc
Il travaille sur l'interface graphique de vim trop..
Exemple d'Utilisation -- :Shell faire
Des commandes comme
make
sauver leur sortie de/tmp/vsoMething
. Leerrorfile
paramètre semble être pour le fichier de sauvegarde de la quickfix/emplacement de la liste. Si vous voulez la sortie de quelque part spécifique, voirmakeef
. Vous pouvez ouvrir la fichiererreurs comme ceci:(Malheureusement, cela ne semble pas fonctionner pour
:grep
.)redir
n'a pas à être fastidieux. Voir ce plugin pour le simplifier. (J'ai ftdetect et ftplugin scripts pour rendre le tampon de sortie n'est pas soutenue par un fichier.)Vous voyez la sortie sur le terminal lorsque vous tapez
:!cat
en raison de votre terminal, pas de vim. Vous auriez du voir la même chose si vous avez utilisé Ctrl-z qui suspend vim afin de vim n'est pas activement de faire quoi que ce soit.