Wie vermeide ich, nach "^" "Leerzeichen" einzugeben, um in dired in das Verzeichnis zu gelangen?

9

^ist die Schlüsselbindung für das Verschieben in das übergeordnete Verzeichnis in dired("Up-Verzeichnis").

Doch in Gnu Emacsauf Windows 7 Professional 64-bitmit meinem deutschen Tastaturlayout ist es nicht ausreichend , „^“ zu geben , aber ich habe Platz zu geben danach die Schlüssel-Bindung Arbeit zu machen.

Wie kann ich die Tastenbelegung neu definieren, um zu vermeiden, dass Sie die Leertaste drücken und sich nur mit "^" nach oben bewegen müssen?


C-h k ^<space> kehrt zurück

^ führt den Befehl dired-up-directory aus, eine interaktive kompilierte Lisp-Funktion in `dired + .el '.

Es ist gebunden an ^ ,.

(dired-up-Verzeichnis & optional OTHER-WINDOW)

Führen Sie Dired im übergeordneten Verzeichnis des aktuellen Verzeichnisses aus. Suchen Sie das übergeordnete Verzeichnis entweder in diesem Puffer oder in einem anderen Puffer. Erstellt bei Bedarf einen Puffer.

Meistens harmlos
quelle
4
Dies ist ein Betriebssystemproblem, da dieses Verhalten wie Sticky Keys klingt und in bestimmte Keymaps integriert ist, z. B. us-intlunter Linux.
Wasamasa
Klingt so, als ob wasamasa richtig ist. In diesem Fall sollten Sie sich fragen, wie Sie den Befehl an einen anderen Schlüssel binden können.
Andrew Swann
@ AndrewSwann: Vielleicht, vielleicht auch nicht. Es ist eine gute Sache zu überprüfen, ja. Das Linux-Verhalten sollte hier jedoch irrelevant sein, vorausgesetzt, das microsoft-windowsTag ist angemessen.
Drew
Der einfachste Weg , dies zu überprüfen , würde suchen , ob das gleiche Verhalten auf andere Programme, so wie zum Beispiel durch die Eingabe ^in notepad.exe.
Wasamasa
3
Ich denke, Sie haben nur wenige Optionen: (1) Verwenden Sie ein anderes Tastaturlayout, bei dem ^ keine tote Taste ist - dies erfolgt auf Betriebssystemebene, nicht in Emacs, oder (2) Binden Sie eine andere Taste an dired-up-directoryund verwenden Sie sie stattdessen oder (3) Lebe mit dem Problem und tippe das Leerzeichen nach ^ ein. Ich werde mit (3) selbst, aber ich tun finde es irritierend.
Harald Hanche-Olsen

Antworten:

11

Bei Ihrem Tastatur-Setup ist die Taste ^ höchstwahrscheinlich eine "tote Taste". Es ist ein Schlüssel, der in Verbindung mit einem anderen verwendet werden soll, um ein anderes Zeichen zu erzeugen. In diesem Fall sollen akzentuierte Zeichen erzeugt werden: ^ e wird ê erzeugen, ^ a wird produzieren - und so weiter.

Es sollte jedoch nicht spezifisch für Emacs sein: Ich denke, alle Ihre Anwendungen erfordern, dass Sie ^ drücken und ein tatsächliches ^ auf dem Bildschirm erzeugen.

Um dies zu lösen, müssen Sie lediglich ein anderes Tastaturlayout verwenden. Im Fall Ihres deutschen Layouts in einer Windows-Umgebung verweise ich einfach auf /superuser/280005/how-to-make-and-non-dead-keys-on-windows-7- mit-deutsch-tastatur-layout , in der hoffnung , dass dies das richtige ist.

Junger Frosch
quelle
0

Ich denke, Sie haben bestätigt, dass die Bindung von ^in Dired so ist dired-up-directory, dass der aufgerufene Befehl nicht das Problem ist, es sei denn, Sie oder etwas, das Sie laden, haben diesen Befehl empfohlen. (Verwenden Sie C-h k ^und lassen Sie uns wissen, ob der Befehl empfohlen wird.)

Sie haben dies mit markiert microsoft-windows. Erwähnen Sie möglicherweise, welche MS Windows-Version Sie verwenden. Ich sehe dies nicht mit Windows 7 64-Bit.

Sehen Sie dasselbe Verhalten, wenn Sie Emacs mit runemacs -Q, dh ohne Init-Datei, starten ? Wenn ja, geben Sie hier bitte ein Rezept ab runemacs -Q. In diesem Fall könnte dies ein Emacs-Fehler sein.

Wenn Sie das Problem mit nicht sehen, emacs -Qhalbieren Sie Ihre Init-Datei rekursiv, bis Sie sie eingrenzen, um den Schuldigen zu finden. Mit dem Befehl können Sie comment-regionden Codebereich C-uauskommentieren ( mit ihm den Kommentar auskommentieren).

Sobald Sie den Tätercode gefunden haben, können Sie dies genauer untersuchen. Oder Sie können hier berichten, was Sie gefunden haben, wenn Sie weitere Hilfe benötigen. Seien Sie für die beste Hilfe so genau wie möglich.

Zur Neudefinition des Schlüssels: Das ist kein Problem - verwenden Sie einfach (define-key dired-mode-map SOME-KEY 'dired-up-directory), wo SOME-KEYsich eine Schlüsselbeschreibung befindet. Um den Befehl beispielsweise an zu binden C-o, können Sie Folgendes verwenden:

(define-key dired-mode-map (kbd "C-o") 'dired-up-directory)

Aktualisiert nach Ihrem Kommentar und anderen -

Da Sie dasselbe sehen emacs -Q, liegt das Problem entweder in Ihrem MS Windows-Setup (dh außerhalb von Emacs) oder in einem Fehler in Emacs.

Andere Kommentare machen jedoch deutlich, dass das Problem in MS Windows bei Sticky Keys zu liegen scheint. Versuchen Sie , klebrige Schlüssel auszuschalten .

Drew
quelle
3
Dies ist mit ziemlicher Sicherheit nebensächlich. Der Kommentar von @wasamasa ist jedoch absolut relevant. Der Punkt ist, dass emacs, da ^ klebrig ist, das Tastendruckereignis erst sieht, wenn der Benutzer ein Leerzeichen eingibt.
Harald Hanche-Olsen
danke für deine ausführliche antwort! Ja, runemacs.exe -Qdamit ist das gleiche. Wenn Sie ^ in einen Puffer eingeben, wird das Zeichen nur eingegeben, wenn Sie anschließend <Leerzeichen> oder eine andere Taste eingeben. Gleich im diredModus muss es ^1 <space>nach oben gehen. Für define-key: aber ich möchte den Schlüssel ^ für diese Bindung verwenden. Gibt es eine Möglichkeit, das Warten auf <Leerzeichen> zu vermeiden?
Meistens harmlos
@ Harald: Also was kann ich tun?
Meistens harmlos