Comment copier et coller à partir du terminal avec clavier? [fermé]
j'essaie de m'éloigner de l'utilisation de la souris autant que je peux (juste un projet animal de compagnie). Je sais que dans le terminal vous pouvez faire c-k pour couper une ligne et c-u pour coller cette ligne de nouveau dans ce même terminal, mais je suis à la recherche de quelque chose où je peux copier une ligne dans le terminal dans gnomes presse-papiers afin que je puisse la coller dans dire un navigateur ou quelque chose.
je sais que si j'utilise la souris pour mettre le texte en surbrillance, je peux alors appuyer sur Maj-insert pour coller ce texte, ce qui est génial, mais maintenant je veux juste pouvoir le faire sans la souris. Quelque chose comme la mise en évidence de c-space dans emacs (mais même cela ne copie pas dans le presse-papiers de gnome).
Merci
un peu plus de clarification, j'ai plusieurs terminaux différents ouverts, et sur beaucoup j'ai ssh'ed dans diverses machines distantes où les utilités comme xclip/xsel ne sont pas aussi utiles.
10 réponses
a déclaré ici , les commandes par défaut pour GNOME copier et coller sont CTRL - SHIFT - C et Ctrl - SHIFT - V .
Edit: j'ai trouvé un post de blog utile qui vous permet d'activer le copier/coller de terminal à CTRL - c et CTRL - V in GNOME.
Shift + Insert pour coller. Je pense que c'est ce dont vous avez besoin, mais je ne sais pas comment copier depuis le terminal.
pour l'interaction avec le bloc-notes X11 à partir de la ligne de commande, voir cette question .
peut-être une piste latérale à ce que vous demandez pour, mais pour l'interaction de fenêtre de terminal je peux recommander écran , où vous utilisez des clés pour copier et coller (à partir d'un tampon scrollback searchable!). L'opération de copie et de coller seulement est entre les fenêtres contrôlées par l'écran mais comme vous le décrivez avec la fenêtre du terminal et c-u & c-k, mais vous pouvez facilement Dumper vers /tmp/screen-xchange et ensuite utiliser xclip pour copier dans le presse-papier X11.
j'ai essayé ce que hlovdal suggéré et utilisé GNU screen
et xclip
.
Le résultat fut un script simple:
cat /tmp/screen-exchange | xclip
que j'ai configuré en C-a e
dans .screenrc
:
bind e exec !!! $HOME/bin/screen-exchange-to-primary
ensuite j'entre simplement le mode Copie/scrollback à l'écran avec C-a [
marquer/sélectionner avec >
et copier à la sélection primaire avec C-a e
.
Peut-être pas la meilleure séquence de combinaisons, mais c'est le meilleur que j'ai eu jusqu'à présent.
c'est facile! Il suffit d'exécuter deux commandes et vous pourrez copier et coller avec Ctrl+C
Ctrl+V
!
gconftool-2 -t str -s /apps/gnome-terminal/keybindings/copy "<Control>c"
gconftool-2 -t str -s /apps/gnome-terminal/keybindings/paste "<Control>v"
bonne copie!
vous pouvez lancer le shell dans Emacs, puis vous pouvez sélectionner et copier dans le presse-papiers comme vous le feriez habituellement dans Emacs.
comme pour "exécuter le shell à L'intérieur D'Emacs", il y a plusieurs options: M-x shell
, M-x eshell
, et diverses term
/ eterm
/ ansi-term
-basé stuff (modes) (ces "*terme" doit être meilleur pour les malédictions pseudographics etc.)
quant à moi personnellement, en essayant de garder loin de la souris, j'essaie d'utiliser eshell
principalement (Je n'ai pas besoin de malédictions apps habituellement), emacs-w3m
pour la navigation sur le web, juste Emacs la plupart du temps pour tout le reste, et ratpoison
comme le gestionnaire de fenêtres.
Pendant longtemps, j'ai aussi essayé de trier en utilisant vt100.traduction.
tiré de http://www.fifi.org/doc/xterm/xterm.faq.html#future_work :
"XTerm*vt100.translations: #override \n\
<Key>Insert: string("151900920"1) \n\
Shift <Key>Up: scroll-back(1,lines) \n\
Shift <Key>Down: scroll-forw(1,lines) \n\
Shift <Key>Right: string(0x1b) string("f") \n\
Shift <Key>Left: string(0x1b) string("b") \n\
Shift <Key>Delete: string(0x1b) string(0x08) \n\
Shift <Key>Tab: string(0x1b) string("*") \n\
<Key>0x1000FF0D: scroll-back(1,page) \n\
<Key>0x1000FF0E: scroll-forw(1,page) \n\
<Key>0x1000FF09: string(0) \n\
<Key>0x1000FF0A: string("151900920"5) \n\
<Key>BackSpace: string(0xff) \n\
<Key>Select: select-start() \n\
<Btn1Motion>: select-extend() \n\
<Key>0x1000FF02: select-end(PRIMARY,CUT_BUFFER0) \n\
Meta <Key>0x1000FF02: select-end(CLIPBOARD) \n\
<Key>0x1000FF04: insert-selection(PRIMARY,CUT_BUFFER0) \n\
Meta <Key>0x1000FF04: insert-selection(CLIPBOARD) \n\
<Key>F1: string(0x1b) string("OP")
sans succès
OK si nous avons défini une touche pour select-start select-end ..étendre mais comment apporter leur curseur.
gnu screen peut être une solution mais, il ne sera pas correctement en zsh, et nous ne pouvons pas apporter couper le texte en Xclipboard.
je sais que si votre programme shell est bash ou tcsh, il utilise la bibliothèque readline pour éditer la ligne, donc la fonction Control-K est gérée par readline et est stockée dans un tampon" kill-ring " à l'intérieur de votre programme shell. Il est impossible de voler le contenu du kill-ring de votre shell (à moins que votre shell ait des fonctionnalités spécifiques programmées qui lui permettent), cependant vous pouvez reconfigurer le Control-K pour effectuer une autre action en configurant le .fichier inputrc dans votre maison répertoire. Ainsi, vous pouvez le configurer pour effectuer une macro, par exemple, en sortant le texte "xclip-in\N" et puis en déchargeant le contenu du kill-ring sur la sortie avec une action "Control-D" pour terminer le texte. Ceci est expliqué en grande partie dans la page de manuel readline.
Je n'ai jamais essayé quelque chose comme ça avant donc je ne sais pas si ça marcherait ou pas, mais c'est la route que j'essaierais en premier.
puis-je suggérer RatPoison comme gestionnaire de fenêtres? Comme son nom l'indique, vous n'avez pas besoin d'une souris à tous. Je ne suis pas sûr de la façon dont il gère le presse-papiers, car je ne l'ai jamais utilisé que pour m'amuser. Cela peut dépendre du programme terminal que vous utilisez.
c'est un hack super-clunky, mais il fonctionne pour copier la dernière ligne de sortie de la dernière commande d'exécution dans un terminal en utilisant seulement le clavier (et un script python), et il peut fonctionner sur ssh.
Voici comment vous l'utilisez.
- Dans gnome-terminal (ou similaire), Alt+E, A. C'est pour Tout Sélectionner.
- si vous êtes en ssh, ouvrez un autre terminal sur votre machine locale.
- Exécuter le joint script, que j'appelle lastline sur mon machine.
alors vous avez une ligne de texte sans nouvelle ligne sur votre bloc-notes gtk. Le script fonctionne en utilisant le bloc-notes de la sélection x à partir de la sélection de tout le texte du terminal et en plaçant la troisième à la dernière ligne de celui-ci sur le bloc-notes gtk. Ce script peut être modifié pour sélectionner différentes parties de la sélection x, qui correspondraient à différentes parties du tampon texte du terminal. Cependant, il reste encore un long chemin à partir d'un curseur interactif: (
ce serait bien si gnome-terminal intégrait un support de sélection piloté par clavier.
cet exemple place "/ usr / bin / gcc" sur le bloc-notes gtk (n'oubliez pas de sélectionner tout avant d'exécuter lastline):
$ which gcc
/usr/bin/gcc
$ lastline
voici le script que j'appelle lastline:
#!/usr/bin/env python
import sys, subprocess
import optparse
__version__ = "0.1"
def main():
try:
process = subprocess.Popen(["xsel"], stdout=subprocess.PIPE)
except OSError:
sys.exit("you must install xsel")
(stdout, _) = process.communicate()
lines = stdout.split("\n")
if len(lines) < 3:
text = ""
else:
text = lines[-3]
import gtk
clipboard = gtk.clipboard_get()
clipboard.set_text(text)
clipboard.store()
if __name__ == "__main__":
parser = optparse.OptionParser(version=__version__)
(options, args) = parser.parse_args()
main()