J'utilise souvent ctrl+cpour copier du texte à partir d'une application graphique, puis le coller dans mon émulateur de terminal (terminateur), en utilisant le menu contextuel et le coller. Parfois, j'oublie que le presse-papiers contient plusieurs lignes qui, une fois collées dans bash, "exécutent" chaque ligne
Existe-t-il une solution pour empêcher complètement la pâte multiligne?
bash
command-line
x11
clipboard
terminal-emulator
Martin Vegter
la source
la source
sleep 999999
puis faites le collage si cela semble correct. la commande sleep ne lit pas les lignes et elles sont supprimées lorsque vous appuyez surctrl+c
.bash
prendra en charge la pâte entre crochets ,zsh
déjà via un plugin tiers .printf '\e[?2004h'
dans la plupart des émulateurs de terminaux de type xterm, permet un mode de collage entre crochets où le terminal met le texte collé entre crochets afin que les applications puissent détecter où le collage commence et où il se termine. xterm prend également en charge un autre mode avec\e[?2005h
lequel tous les caractères collés sont préfixés^V
(compris par de nombreuses applications et la discipline de ligne tty commelitteral-next
).Réponses:
Cette réponse n'est pas la plus spécifique à la question de l'utilisateur. Veuillez consulter ma deuxième réponse. Je laisse cela ici parce qu'il aborde la question plus générale .
Par les commentaires à votre message original, vous avez besoin (1) un émulateur de terminal qui supports entre crochets coller et (2) support correspondant pour tout ce qui est en cours d' exécution dans le terminal, à savoir
vim
,bash
,zsh
. Émulateurs de terminaux prenant en charge la pâte entre crochets (liste à mettre à jour en fonction des commentaires de cet article):xterm
- depuis ??gnome-terminal
- depuis ??putty
- depuis 0.63 (date de sortie 2013-08-06)Applications prenant en charge le mode entre crochets:
vim
zsh
Pour
bash
, StéphaneChazelas a mis en place un script shell pour faciliter la détection de ce mode et prendre les mesures appropriées.Une réponse plus spécifique - empêchant les lignes de se couper - est sans réponse sans connaître le programme unix qui s'exécute lorsque vous appuyez sur coller.
Un gestionnaire de presse-papiers peut-être ce dont vous avez besoin.
la source
^V
tant queliteral-next
. Mais comment^V
entrer dans le flux d'entrée de l'application?bash
l'invite de readline le verra (et le traitera comme littéral-suivant)). Si en mode icanon, la discipline de ligne de ce périphérique tty interne le supprimera (tant que lelnext
caractère est^V
), tout comme lorsque vous tapez Ctrl-V X manuellement ..^V
sauf si vous utilisez lequoted paste
mode xterm (activé par l'envoi\e[?2005h
). Ceperl
script pourrait être adapté pour qu'il supprime tout sauf la première ligne d'un collage multiligne (mais pas de manière fiable pour les pâtes volumineuses), mais tel qu'il est déjà, car il cite la nouvelle ligne pour readline (comme si vous aviez appuyé sur Ctrl- V Ctrl-J), cela empêche les lignes d'être exécutées (elles sont juste ajoutées au tampon d'édition et vous devez toujours appuyer sur Entrée pour les exécuter).