EDIT Avril 2015: Si vous avez cette même question, je recommande également de consulter http://xiki.org/
Je sais que ce n'est pas ainsi que fonctionnent les terminaux, mais je souhaite souvent qu'il y ait un moyen facile d'utiliser du texte (le copier, le modifier, etc.) qui se trouve déjà dans l'historique de ma fenêtre de terminal à partir d'une sortie de commande précédente.
Je l'ai imaginé comme ça:
Je suis sur mon shell bash sur le point d'entrer une commande et je me rends compte que je dois taper quelque chose qui est déjà à l'écran quelques lignes ci-dessus. Je peux atteindre la souris et la sélectionner, mais je déteste ça. Ce que je souhaite vraiment en ce moment, c'est que tout mon terminal devienne un tampon Vim géant, tout cela: les invites, les commandes que j'ai tapées et la sortie de ces commandes. Tout. Et puis je pourrais sauter quelques lignes, peut-être éditer un peu et tirer du texte. Ensuite, revenez au mode shell bash et collez tout ce que j'ai tiré dans la ligne de commande actuelle.
Je sais qu'il y a quelques options:
Naturellement, dirigez le texte dont j'ai besoin directement de la sortie d'une commande vers un fichier, ou directement à la commande suivante. Mais pour cela, vous devez planifier à l'avance ou réexécuter la commande à partir de votre historique (en supposant que la sortie ne changera pas entre les invocations).
Pour atteindre la souris et sélectionnez le texte à copier. Lame, ennuyeux, j'aurais aimé ne pas avoir à faire ça, (ce n'est pas le site GUI stackexchange, n'est-ce pas? =)
Pour utiliser l'option "Exporter le texte sous ..." de mon application Mac OS X et enregistrer le texte du terminal dans un fichier. Ouvrez ensuite le fichier et travaillez avec. Presque, mais pourquoi passer par l'étape d'enregistrement dans un fichier sur le disque?
La question est donc: que faites-vous dans cette situation? Y a-t-il une astuce, un outil, une fonction shell qui pourrait être utile dans ce scénario? Vous résignez-vous simplement pour utiliser la souris ou retapez ce que vous devez taper?
Il se peut que le problème soit que je ne fasse pas les choses «à la manière Unix», mais allez, c'est 2010 et je ne peux pas facilement copier du texte à quelques lignes de mon curseur?
la source
Réponses:
Vous pouvez utiliser un script (utilisez -f pour vous assurer qu'il videra à chaque fois) et vous pouvez avoir toutes les sorties dans un fichier.
Utilisez un multiplexeur de terminaux (écran, tmux, etc.). Par exemple, pour l'écran http://web.mit.edu/gnu/doc/html/screen_11.html#
D'autres multiplexeurs de terminaux ont certainement des capacités plus avancées.
la source
Dans tmux (un multiplexeur de terminaux), vous pouvez appuyer sur Ctrl + A- [pour passer en mode tampon Vi où vous pouvez naviguer sur l'écran, faire défiler le tampon d'avant en arrière, copier du texte, etc. Le raccourci par défaut est en fait Ctrl + B- [mais c'était évidemment destiné à être reconfiguré. En outre, le mode de tampon par défaut est Emacs, mais vous pouvez le configurer pour qu'il soit Vi.
Découvrez tmux, c'est vraiment un grand multiplexeur de terminaux moderne. En plus de travailler avec le tampon, vous pouvez diviser l'écran en plusieurs fenêtres, vous connecter à la même session à partir de plusieurs terminaux, etc. Pour plus de commodité, vous pouvez même en faire votre shell de connexion si vous lui dites quel est votre shell réel.
Sur OpenBSD, tmux faisait même partie du système de base.
Voir la page de manuel de tmux pour plus de détails. Voir également les captures d'écran sur http://tmux.sourceforge.net/
la source
Dans emacs, le shell Mx gère l'édition de la sortie précédente. Vous pouvez facilement copier coller la sortie des commandes précédentes, ou n'importe quelle partie de votre tampon, comme un tampon normal. Je suis presque sûr qu'il devrait y avoir un équivalent Vim.
la source
eshell
sont accessibles .Comme mentionné ici, Emacs
eshell
pourrait être votre terme + shell par défaut. :) Ensuite, vous utiliseriez au minimum les touches de navigation de texte habituelles. Si vous avez appris plus de touches spéciales, les fonctionnalités suivantes d'Emacseshell
sont accessibles:la source
J'utilise urxvt (rxvt-unicode) et il existe un package appelé urxvt-keyboard-select qui peut être exactement ce que vous voulez, si vous pouvez installer urxvt. Les informations sur le paquet Archlinux (qui contiennent des pointeurs) sont ici:
https://aur.archlinux.org/packages.php?ID=39950
Source d'origine: http://www.github.com/muennich/urxvt-perls
la source
Essayez d'utiliser vim comme CLI? Sélectionnez simplement la sortie à partir de quelques lignes et dirigez-la à travers:!.
la source