En utilisant Emacs dans mode console , Je veux copier le texte sélectionné d’emacs avec la souris et le coller dans une autre application (éventuellement un autre terme).
Mais emacs ajoutera des espaces complets à la sélection pour remplir toute la largeur de l'écran.
Pour ajouter l'insulte à la blessure, vim
marche parfaitement. Je devais passer à vim
(ou cat
) faire un simple copier / coller.
En guise de scénario de test, vous pouvez écrire ce texte dans emacs (en mode console):
(echo Does it work: \
true)
- Sélectionnez ce texte (les deux lignes) avec votre souris.
- Collez-le dans un terminal et appuyez sur
Si c'est écrit:
Does it work: true
Ensuite, cela fonctionne comme prévu (copier-coller travaillé), vous n'avez pas mon problème (pourquoi?). Mais sur mon ordinateur, je vois:
Does it work:
Et le "vrai" est manquant: il échoue comme décrit actuellement dans ce numéro.
Toute suggestion ?
la source
Does it work: true
. Mac OS X 10.8.5, emacs (22.1.1) par défaut sans une seule personnalisation, iTerm2 2.0, version 4.3.30.Réponses:
En mode console, mise en évidence de la syntaxe pouvez gêner et générer des lignes entières "d'espaces" en cours de copie dans le code sélectionné.
Vérifier c'est le coupable
Pour vérifier si c'est ce qui vous tourmente:
M-x global-font-lock-mode
.Si la désactivation de la mise en évidence de la syntaxe corrige votre problème de copier / coller, vous voudrez peut-être lire les informations suivantes pour résoudre ce problème de manière définitive.
Pourquoi est-ce que ça se passe?
Le problème est que vous avez défini une couleur d’arrière-plan pour certaines polices (souvent sur le fond). défaut Police de caractère). En conséquence, emacs remplit l’arrière-plan avec des caractères vides pour pouvoir "peindre" l’écran comme vous le souhaitez et toute action de copier-coller contient ces espaces blancs parasites.
Comment résoudre ce problème?
Vous devriez vérifier votre visage personnalisations (pour défaut police que vous pourriez utiliser
M-x customize-face <RET> default <RET>
) et si vous avez un Couleur de fond différent deunspecified-bg
alors c'est le coupable.unspecified-bg
est une sorte de couleur de fond transparente, qui est en fait la couleur de fond par défaut d’emacs si vous ne la personnalisez pas.Nous pouvons forcer le fond à utiliser
unspecified-bg
sur emacs commencent par l'ajouter en vous~/.emacs
, après toute génération automatiquecustom-set-faces
bloc:Ensuite, redémarrez votre emacs ou
M-x eval-region
sur ce bloc pour vérifier le résultat.En guise de remarque, vous récupérerez également les trucs d’arrière-plan d’un terminal sophistiqué dans votre emacs (je pense à la transparence ou aux images d’arrière-plan ...).
NOTE: même avec cela, vous pourriez avoir une mauvaise surprise avec des espaces blancs fantômes capturés dans un texte spécial, ce qui donnerait une police mal mise en surbrillance. Dans ces cas, vous pourriez envisager d'utiliser le premier truc.
Plus d'explications sur ce qui se passe
Les terminaux ont une couleur de fond qui leur est propre (certains terminaux peuvent même permettre d'afficher une image en tant qu'arrière-plan ou même d'être transparent). Donc, pour la console, il y a comme un rien de couleur (voyez-le comme un canal alpha), et c'est la couleur par défaut pour la console.
L'application console peut changer à la fois la couleur de la police et l'arrière-plan grâce aux séquences d'échappement ANSI.
Si vous demandez à emacs de changer la couleur d'arrière-plan, il vous faudra peindre artificiellement l'écran avec des caractères d'espaces blancs ayant leur propre couleur d'arrière-plan définie sur ce que vous avez choisi.
Lors de la sélection, vous utilisez souvent la fonctionnalité de copier-coller du terminal, qui ignore totalement l'application de la console que vous utilisez. Il le fait en copiant-collant tous les caractères présents à l'écran et copiera ainsi les espaces blancs.
Notez que vous pouvez avoir une configuration qui permettra à votre application console de recevoir les entrées de la souris et de gérer la sélection et le copier-coller. Mais ce n'est pas si commun et le shell, qui est l'application la plus courante active dans votre terminal, ne supporte pas la souris.
la source
custom-set-faces
bien que j'ai converti votre réponse en(unless window-system (set-face-attribute 'default nil :background "unspecified-bg"))
et cela a fonctionné pour moi. Même si je trouve que les lignes de commentaire ont le même comportement, elles sont au moins moins horribles que toutes les lignes.M-x customize-face <RET> default <RET> --> background-color: unspecified-bg
) a également corrigé un problème légèrement différent que je rencontrais dans Aquamacs.app (MacOSX): lorsqu’on tirait des lignes, un seul espace supplémentaire était ajouté à la toute fin du texte saisi - si j’en tirais deux fichier, la nouvelle ligne 3 aurait un espace parasite au début..emacs
comme spécifié pas (peut-être parce que je cours emacs dans une session tmux?).