
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-command
so verarbeitet wird.)
- 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. 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 hinzuPermitRootLogin no
. - Fügen Sie eine Zeile hinzu
AllowUsers USERNAME
und ersetzen Sie USERNAME durch Ihren Linux-Benutzernamen (wenn Sie diesen nicht kennen, führen Sie den Befehlwhoami
an 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 InhaltUsePrivilegeSeparation yes
; ändern Sie einfach dasyes
inno
und speichern Sie das/etc/ssh/sshd_configDatei.
Wenn hier etwas schief geht, können Sie die Datei wiederherstellen, indem Sie Schritt 1 wiederholen.
- Wenn eine unkommentierte Zeileneinstellung vorhanden ist
- Starten Sie den SSH-Server mit dem Befehl
sudo service ssh --full-restart
. - Mit PuTTY (DownloadHier), melden Sie sich mit
localhost
im Feld Hostname an, alles andere bleibt wie vorgegeben. Sie werden aufgefordert, Ihren Linux-Benutzernamen und Ihr Passwort einzugeben. - 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 localhost
auf 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.
- Öffnen Sie „Einstellungen“ (Klicken Sie dazu auf das
☰
Symbol oben). - Klicken Sie auf „Tasten und Makros“.
- 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. - Wählen Sie „Leerzeichen“ im ersten Dropdown-Menü.
- Wählen Sie „Strg“ im zweiten Dropdown-Menü.Lassen Sie die verbleibenden beiden Dropdown-Menüs unverändert.
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")
Oben wird grundsätzlich
M-x select-mark-command
eine Zeichenfolge an Emacs gesendet.Klicken Sie nun auf „Einstellungen speichern“.
Am Ende sollte es so aussehen:
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!