Il n'y a pas de solution à cela, en termes de faire passer Ctrl-Espace via le terminal Bash, au moment de la rédaction de ce document (1 septembre 2016) - mais il existe une solution de contournement qui peut être suffisante pour de nombreux utilisateurs: utilisez PuTTY pour vous connecter via SSH, qui force la gestion de Ctrl-Espace. (En mode tty, il est impossible de distinguer Ctrl-Espace de Ctrl-@, car ce sont les mêmes codes de caractères, mais cela ne devrait pas être un problème, car par défaut Emacs est configuré pour gérer de set-mark-command
cette façon.)
- Installez le serveur OpenSSH avec
sudo apt-get install openssh-server
. S'il était déjà installé, supprimez-le ( sudo apt-get remove openssh-server
), puis réinstallez-le pour réinitialiser les fichiers de configuration.
Modifiez le fichier / etc / ssh / sshd_config (avec sudo), comme suit:
- S'il existe un paramètre de ligne non
PermitRootLogin
commenté, mettez-le en commentaire. Ajoutez une ligne PermitRootLogin no
.
- Ajoutez une ligne
AllowUsers USERNAME
, en remplaçant USERNAME par votre nom d'utilisateur Linux (si vous ne savez pas ce que c'est, exécutez la commande whoami
à votre invite Bash).
- Idéalement, vous devez configurer l'authentification sans mot de passe à l'aide des clés SSH, mais la façon de procéder est hors de portée de cette question (il existe de nombreux guides disponibles; recherchez sur le Web "ssh-keygen sans mot de passe"). En attendant, ajoutez ou décommentez la ligne
PasswordAuthentication yes
.
- Set
UsePrivilegeSeparation no
; vous trouverez probablement une ligne dans le fichier disant UsePrivilegeSeparation yes
; changez simplement le yes
en no
et enregistrez le fichier / etc / ssh / sshd_config .
Si quelque chose ne va pas ici, vous pouvez restaurer le fichier en répétant l'étape # 1.
- Démarrez le serveur SSH avec la commande
sudo service ssh --full-restart
.
- En utilisant PuTTY (télécharger ici ), connectez-vous avec
localhost
dans le champ Hostname, tout le reste par défaut. Il vous sera demandé de saisir votre nom d'utilisateur Linux et votre mot de passe.
- Courez
emacs
. Ctrl-espace définira la marque comme vous le souhaitez.
(Notez que les étapes ci-dessus ne permettront pas en soi à votre système d'accepter les connexions SSH d' autres hôtes. Pour ce faire, vous devrez également modifier vos règles de pare-feu Windows pour autoriser le port TCP 22 entrant.)
Dans une autre réponse, vous avez dit: "mais le mastic n'est pas un terminal local". Je ne sais pas si vous ne saviez pas que vous pouviez utiliser localhost
de cette manière, ou si vous rejetiez PuTTY en raison de la surcharge supplémentaire par rapport à un terminal local. Si ce dernier, je ne m'inquiète pas, une session SSH interactive est une charge extrêmement légère. (C'est certainement beaucoup moins de charge que d'exécuter un système X Window, vous pouvez donc exécuter une interface graphique Emacs ou un xterm!)
Le seul inconvénient réel à fonctionner de cette façon par rapport à un terminal droit est que les événements de collage sont envoyés lettre par lettre, comme si vous tapiez très rapidement le contenu du presse-papiers, ce qui peut provoquer des paires électriques, des indentations, une expansion des extraits, etc. Feu. (Le collage ne doit pas provoquer le déclenchement des commandes d'accords de touche, car il existe une logique pour détecter un collage en cours et désactiver les accords de clé jusqu'à ce que le collage soit terminé.)
Et il y a au moins un très gros avantage par rapport au terminal Bash standard: les événements de souris sont pris en charge par PuTTY sous une forme à laquelle Emacs peut répondre, donc, ironiquement, vous pouvez déplacer le point avec la souris dans PuTTY même si vous le pouvez '' t avec le terminal local.
Lors de l'exécution
showkey -a
dans la console windows / ubuntu-bash, cela montre que ctrl + espace envoie simplement un espace simple.Et c'est le même problème avec la session ssh pour tout autre machine Linux, ctrl + espace est envoyé en espace simple.
Le même comportement s'applique à tout autre terminal basé sur Windows (conemu, consolez, MobaXTerm) - sauf que putty peut gérer cela correctement, mais putty n'est pas un terminal local.
Je pense que les terminaux Windows n'ont pas de mappages pour certaines séquences. Le même problème est avec d'autres combinaisons comme ctrl + 1 ctrl + 2 .. etc. Ici est requis un terminal qui peut gérer les mappages de clavier pour lui-même comme du mastic par exemple.
Je crois que ce problème devrait être résolu dans les futures versions du terminal Windows Bash.
la source
set-mark-command
c'est probablement la commande la plus fréquemment utilisée dans Emacs (à partself-insert-command
), recycler ses doigts pour cela est une question vraiment très difficile, surtout si vous utilisez Emacs depuis plus de 25 ans comme moi.Ce projet vous permet d'utiliser MinTTY comme terminal alternatif: https://github.com/mintty/wsltty . Il est dérivé de PuTTY, mais ne nécessite pas SSH. Et comme PuTTY, il gère très bien l'espace Ctrl.
la source
Ce problème est désormais résolu dans Windows 10 build 14965 . Vérifier:
Et installez les mises à jour si vous ne l'avez pas fait!
la source
Il y a un hack car nous pouvons installer X Server pour Windows
1 première installation de xming pour windows
2 démarrer xming
3 puis à partir de l'installation de Windows Bash
4 puis ouvrez
cmd.exe
et exécutezmaintenant, nous sommes dans la console bash et exécutons
5 À ce stade, nous devrions déjà voir un nouveau terminal à Xming. Et nous pouvons exécuter emacs en mode terminal.
Et toutes les fixations fonctionnent maintenant très bien
la discussion connexe est ici https://github.com/Microsoft/BashOnWindows/issues/531
la source
-nw
fait fonctionner dans un terminal, comme il le ferait avec PuTTY, sauf que vous devez maintenant exécuter un deuxième système de fenêtrage entier - à partir de mon test rapide, cela va vous coûter près de 500 Mo de mémoire au-delà de l'exécution d'un sshd et de PuTTY et aura un coût CPU également plus élevé.