Windows 10 Linux Bash Shell Strg+Leertaste setzt keine Markierung in Emacs

Windows 10 Linux Bash Shell Strg+Leertaste setzt keine Markierung in Emacs

Unter Windows 10 habe ich das Subsystem für Linux Bash installiert. Aber ich habe ein Problem mit der Verknüpfung in Emacs Ctrl+ spacesetzt keinen Markierungspunkt.

Was ich versucht habe und was nicht geholfen hat:

  • Ich habe versucht, "Strg-Tastenkürzel aktivieren" im Eigenschaftenmenü der Windows-Konsole zu deaktivieren

  • Ich habe erfolglos versucht, ein anderes ConEmu-Terminal zu verwenden.

Ich frage mich, ob dies irgendwie mit Ubuntu zusammenhängt, das ähnliche Probleme mit Strg + Leertaste hat, und ob Windows Linux Bash Ubuntu-Repositorys verwendet.

Antwort1

Es gibt keineLösungenzum Zeitpunkt des Schreibens dieses Artikels (1. September 2016) in Bezug auf die Weitergabe von Strg-Leertaste durch das Bash-Terminal – aber es gibt eine Problemumgehung, die für viele Benutzer ausreichen kann: Verwenden Sie PuTTY, um eine Verbindung über SSH herzustellen, wodurch die Verarbeitung von Strg-Leertaste erzwungen wird. (Im TTY-Modus ist es unmöglich, Strg-Leertaste von Strg-@ zu unterscheiden, da es sich um denselben Zeichencode handelt, aber das sollte kein Problem sein, da Emacs standardmäßig so eingerichtet ist, dass es set-mark-commandso verarbeitet wird.)

  1. Installieren Sie den OpenSSH-Server mit sudo apt-get install openssh-server. Wenn er bereits installiert war, entfernen Sie ihn ( sudo apt-get remove openssh-server) und installieren Sie ihn anschließend neu, um die Konfigurationsdateien zurückzusetzen.
  2. Bearbeiten Sie die/etc/ssh/sshd_configDatei (mit sudo) wie folgt:

    • Wenn eine unkommentierte Zeileneinstellung vorhanden ist PermitRootLogin, kommentieren Sie diese aus. Fügen Sie eine Zeile hinzu PermitRootLogin no.
    • Fügen Sie eine Zeile hinzu AllowUsers USERNAMEund ersetzen Sie USERNAME durch Ihren Linux-Benutzernamen (wenn Sie diesen nicht kennen, führen Sie den Befehl whoamian Ihrer Bash-Eingabeaufforderung aus).
    • Idealerweise sollten Sie eine passwortlose Authentifizierung mit SSH-Schlüsseln einrichten, aber wie das geht, geht über den Rahmen dieser Frage hinaus (es sind viele Anleitungen verfügbar; suchen Sie im Internet nach „passwordless ssh-keygen“). Fügen Sie in der Zwischenzeit die Zeile hinzu oder entfernen Sie die Kommentarzeichen PasswordAuthentication yes.
    • Setzen Sie UsePrivilegeSeparation no; wahrscheinlich finden Sie in der Datei eine Zeile mit dem Inhalt UsePrivilegeSeparation yes; ändern Sie einfach das yesin nound speichern Sie das/etc/ssh/sshd_configDatei.

    Wenn hier etwas schief geht, können Sie die Datei wiederherstellen, indem Sie Schritt 1 wiederholen.

  3. Starten Sie den SSH-Server mit dem Befehl sudo service ssh --full-restart.
  4. Mit PuTTY (DownloadHier), melden Sie sich mit localhostim Feld Hostname an, alles andere bleibt wie vorgegeben. Sie werden aufgefordert, Ihren Linux-Benutzernamen und Ihr Passwort einzugeben.
  5. Ausführen emacs. Strg-Leertaste setzt die Markierung wie gewünscht.

(Beachten Sie, dass die obigen Schrittenichtmachen Ihr System selbst in der Lage, SSH-Verbindungen vonandereHosts. Dazu müssen Sie auch Ihre Windows-Firewall-Regeln ändern, um eingehenden TCP-Port 22 zuzulassen.)

Ineine andere AntwortSie sagten: „Aber Putty ist kein lokales Terminal.“ Ich bin mir nicht sicher, ob Sie nicht wussten, dass Sie es localhostauf diese Weise verwenden können, oder ob Sie PuTTY wegen des größeren Overheads im Vergleich zu einem lokalen Terminal abgelehnt haben. Wenn letzteres der Fall ist, würde ich mir keine Sorgen machen, eine interaktive SSH-Sitzung ist eine extrem leichte Belastung. (Es ist sicherlichvielweniger Belastung als beim Ausführen eines X Window-Systems, Sie können also einen GUI-Emacs oder ein xterm ausführen!)

Der einzige wirkliche Nachteil dieser Methode gegenüber einem normalen Terminal ist, dass Einfügevorgänge Buchstabe für Buchstabe gesendet werden, als ob Sie den Inhalt der Zwischenablage sehr schnell eingegeben hätten, was dazu führen kann, dass elektrische Paare, Einrückungen, Snippet-Erweiterungen usw. ausgelöst werden. (Einfügen solltenichtbewirken, dass Key-Chord-Befehle ausgelöst werden, da eine Logik vorhanden ist, die ein laufendes Einfügen erkennt und Key-Chords deaktiviert, bis das Einfügen abgeschlossen ist.)

Und es gibt gegenüber dem Standard-Bash-Terminal zumindest einen sehr großen Vorteil: Mausereignisse werden von PuTTY in einer Form unterstützt, auf die Emacs reagieren kann. Ironischerweise können Sie also den Punkt in PuTTY mit der Maus verschieben, auch wenn dies mit dem lokalen Terminal nicht möglich ist.

Antwort2

Ich verwende ConEmu. Einen eleganten Weg gibt es nicht, aber es lässt sich mit dem Makro lösen.

  1. Öffnen Sie „Einstellungen“ (Klicken Sie dazu auf das Symbol oben).
  2. Klicken Sie auf „Tasten und Makros“.
  3. Scrollen Sie auf der rechten Seite nach unten, bis Sie die Optionen „Makro 01“ … „Makro 32“ sehen, und wählen Sie eine der verfügbaren Optionen aus (egal).
    Lass uns nehmenMakro 01für dieses Beispiel.
  4. Wählen Sie „Leerzeichen“ im ersten Dropdown-Menü.
  5. Wählen Sie „Strg“ im zweiten Dropdown-Menü.Lassen Sie die verbleibenden beiden Dropdown-Menüs unverändert.
  6. Fügen Sie unten in dasGUI-MakroFeld:

    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. Oben wird grundsätzlich M-x select-mark-commandeine Zeichenfolge an Emacs gesendet.Klicken Sie nun auf „Einstellungen speichern“.


Am Ende sollte es so aussehen:

Bildbeschreibung hier eingeben

Antwort3

Dieses Projekt ermöglicht Ihnen die Verwendung von MinTTY als alternatives Terminal:https://github.com/mintty/wsltty. Es ist von PuTTY abgeleitet, erfordert aber kein SSH. Und wie PuTTY kommt es mit Strg-Leertaste problemlos zurecht.

Antwort4

Dieses Problem ist nun behoben inWindows 10 Build 14965. Überprüfen:

[Environment]::OSVersion

Und installieren Sie Updates, falls Sie dies noch nicht getan haben!

verwandte Informationen