web-dev-qa-db-fra.com

Windows 10 Linux Bash Shell Ctrl + Space ne définit pas Mark in Emacs

Dans Windows 10, j'ai installé un sous-système pour Linux Bash. Mais j'ai un problème de raccourci dans emacs Ctrl+space Ne définit pas le point de marque.

Ce que j'ai essayé et n'aide pas n'aide:

  • J'ai essayé de décocher "Activer les raccourcis clés CTRL" dans le menu Propriétés pour la console Windows

  • J'ai essayé d'utiliser différents terminaux conemu sans succès.

Je me demande si cela est en quelque sorte lié à Ubuntu, qui a des problèmes similaires avec Ctrl + Space, et Windows Linux Bash utilise des référentiels Ubuntu.

12
Pawel Dubiel

Il n'y a pas solutions À cela, en termes de réussite de Ctrl-Space Pass via le terminal Bash, au moment de cette écriture (1 sept. 2016) - mais il y a une solution de contournement qui peut être suffisante Pour de nombreux utilisateurs: Utilisez Putty pour se connecter via SSH, qui force la gestion de l'espace Ctrl. (En mode TTY, il est impossible de distinguer le Ctrl-Space de Ctrl- @, car ils sont le même code de caractère, mais cela ne devrait pas être un problème, comme par défatage par défaut est configuré pour gérer set-mark-command manière.)

  1. 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 obtenir la réinitialisation des fichiers de configuration.
  2. Modifier le /etc/ssh/sshd_config Fichier (avec sudo), comme suit:

    • S'il y a un réglage de ligne non motivé PermitRootLogin, commencez-le. Ajouter une ligne PermitRootLogin no.
    • Ajouter une ligne AllowUsers USERNAME, Remplacement du nom d'utilisateur avec votre nom d'utilisateur Linux (si vous ne savez pas ce que c'est, exécutez la commande whoami à votre invite de bash).
    • Idéalement, vous devez configurer une authentification sans mot de passe à l'aide de clés SSH, mais comment faire cela est hors de la portée de cette question (il existe de nombreux guides disponibles; recherchez le Web pour "SSH sans mot de passe SSH-KeyGen"). Entre-temps, ajoutez ou note la ligne PasswordAuthentication yes.
    • Définir UsePrivilegeSeparation no; probablement, vous trouverez une ligne dans le fichier en disant UsePrivilegeSeparation yes; Il suffit de changer le yes à no et enregistrez le /etc/ssh/sshd_config Fichier.

    Si quelque chose ne va pas ici, vous pouvez restaurer le fichier en répétant l'étape 1.

  3. Démarrez le serveur SSH avec la commande Sudo service ssh --full-restart.
  4. Utilisation du mastic (téléchargement ICI ), connectez-vous avec localhost dans le champ d'hôte, tout reste à titre de défaut. Vous serez invité à entrer votre nom d'utilisateur Linux et votre mot de passe.
  5. Run emacs. Ctrl-Space définira la marque comme vous le souhaitez.

(Notez que les étapes ci-dessus seront non, par elles-mêmes, faites votre système capable d'accepter des connexions SSH de Autres hôtes. Pour ce faire, vous devrez également modifier vos règles de pare-feu Windows pour autoriser le port TCP Inbound 22.)

Dans ne autre réponse Vous avez dit: "Mais le mastic n'est pas un terminal local." Je ne sais pas si vous n'étiez pas conscient que vous pouvez utiliser localhost de cette manière, ou si vous supprimez le mastic à cause de la plus grande surcharge par rapport à un terminal local. Si ce dernier, je ne m'inquiéterais pas, une session interactive SSH est une charge extrêmement légère. (C'est certainement beaucoup Moins de charge que d'exécuter un système de fenêtre X afin que vous puissiez exécuter une interface graphique Emacs ou un xterm!)

Le seul inconvénient réel à exécuter de cette façon par rapport à un terminal droit est que les événements de pâte sont envoyés par lettre de lettre, comme si vous avez saisi le contenu du presse-papiers très rapide, ce qui peut provoquer des paires électriques, une indication, une expansion de l'extraction, etc. Feu. (Coller devrait non Cause des commandes de l'accord de clé à tirer, car il y a une logique pour détecter une pâte en cours et désactiver des accords de clé jusqu'à la fin de la pâte.)

Et il y a au moins un très grand avantage sur le terminal Bash standard, également: les événements de la souris sont supportés par des mastics sous une forme que EMACS peut répondre, de manière ironique, vous pouvez déplacer le point avec la souris dans le mastic même si vous le pouvez ' t avec le terminal local.

3
Trey

J'utilise Conemu. Il n'y a pas de manière élégante, mais elle peut être résolue à l'aide de la macro.

  1. Ouvrez "Paramètres" (cliquez sur le icône sur le dessus).
  2. Cliquez sur "Keys & Macros".
  3. Sur le côté droit, faites défiler jusqu'à ce que vous voyiez "Macro 01" .. "Macro 32" Options et choisissez-en une personne disponible (peu importe).
    [.____] prenons macro 01 Pour cet exemple.
  4. Sélectionnez "Espace" dans le 1er menu déroulant.
  5. Sélectionnez "Ctrl" dans le menu 2nd Dropdown. laissez les 2 menus déroulants restants intacts.
  6. Coller ci-dessous dans le champ Macro Gui :

    keys("\e");keys("x");keys("s");keys("e");keys("t");keys("-");keys("m");keys("a");keys("r");keys("k");keys("-");keys("c");keys("o");keys("m");keys("m");keys("a");keys("n");keys("d");keys("\n")
    
  7. ci-dessus envoie essentiellement M-x select-mark-command chaîne à emacs. Maintenant, cliquez sur "Enregistrer les paramètres".


Cela devrait ressembler à ceci à la fin:

enter image description here

5
Akira Ishikawa

Ce projet vous permet d'utiliser MINTYTY comme terminal alternatif: https://github.com/mintty/wslttty . Il est dérivé de mastic, mais ne nécessite pas SSH. Et comme le mastic, il gère le Ctrl-Space très bien.

2
Joel Dice

Lors de la course showkey -a Dans la console Windows/Ubuntu-Bash, il montre que Ctrl + Space envoie simplement une plaine de plaine.

Et c'est le même problème avec la session SSH à toute autre machine Linux Ctrl + Space est envoyée comme espace ordinaire.

Le même comportement est avec tout autre terminal Windows (Conemu, consolez, Mobaxterm), sauf le mastic peut gérer ce puits mais le mastic n'est pas un terminal local.

Je pense que les terminaux de Windows n'ont pas de mappages pour certaines séquences. Le même problème est avec d'autres combinaisons telles que CTRL + 1 Ctrl + 2 .., etc. Le terminal peut gérer les mappages de clavier pour elle-même comme mastic par exemple.

Je crois que cette question devrait être corrigée dans les versions futures du terminal Windows Bash.

2
Pawel Dubiel

Ce problème est maintenant fixé dans Windows 10 Build 14965 . Vérifier:

[Environment]::OSVersion

Et installer des mises à jour si vous ne l'avez pas!

1
oblio