Zwei Tastenkombinationen in Emacs ohne den ersten Schlüssel zu unterdrücken?

8

Angenommen, ich definiere die folgende Verknüpfung

(global-set-key (kbd "C-d C-j") "Hello!")

Ist es möglich, Emacs so zu konfigurieren, dass ich, wenn ich "C-d C-j C-j C-j" eintippe, "Hallo! Hallo! Hallo!" anstatt "C-d C-j C-d C-j C-d C-j" eingeben zu müssen?

    
TheEzEzz 26.09.2011, 19:16
quelle

6 Antworten

11

Ich glaube nicht, dass Sie Emacs so konfigurieren können, dass es das für alle Befehle tut. Sie können diese Funktionalität jedoch in den Befehlen selbst implementieren. Dies wird für C-x e getan. Hier ist ein Makro, das ich gerade geschrieben habe (basierend auf der Standarddefinition von kmacro-call-macro in GNU Emacs 23.1.1) , das es einfach macht, diese Funktionalität zu Ihren eigenen Befehlen hinzuzufügen:

%Vor%

So verwenden Sie es:

%Vor%

Jetzt können Sie C-c x y z z eingeben, um Hello, World! dreimal einzufügen.

    
Daniel Brockman 26.09.2011, 19:43
quelle
4

Wenn Sie etwas Generisches suchen, das auf allen Befehlen funktioniert, kann ich nicht sehen, wie das funktionieren würde - wie würde Emacs wissen, wenn Sie einen neuen Befehl starten oder den vorherigen Befehl wiederholen wollen. Ein besseres Beispiel wäre "C-c h", wenn Sie danach "h" eingeben, sollte Emacs den Befehl wiederholen oder ein h einfügen?

Demnach hat Emacs bereits einen Mechanismus dafür - das universelle Argument.

Probieren Sie diese Tastenfolge aus:

%Vor%

Es gibt noch weniger Tastendrücke als C-d C-j C-j C-j C-j

    
Anders Waldenborg 26.09.2011 19:35
quelle
2

Versuchen Sie etwas wie folgt:

%Vor%

Idee von kmacro-call-macro

übernommen     
Oleg Pavliv 26.09.2011 19:44
quelle
1

Nein. Die Sequenz "ctrl-d ctrl-j" ist, was an die Zeichenfolge "Hallo!" Emacs bindet die Sequenz als Ganzes an die gegebene Zeichenfolge. Hier sind einige gute Informationen zum Thema:

Ссылка

Wenn Sie andererseits nur drei Instanzen von "Hello!" wollten, könnten Sie diese Sequenz C-d C-j C-d C-j C-d C-j als "Hello! Hello! Hello!" definieren. ", aber es wäre kürzer, nur eine einfachere Sequenz für die gewünschte Zeichenfolge zu definieren.

    
Jonathan M 26.09.2011 19:19
quelle
0

Ich benutze das die ganze Zeit. Sie benötigen die Bibliothek repeat.el (Teil von GNU Emacs), um sie zu benutzen.

%Vor%

Jetzt bind my-hello-repeat :

(global-set-key (kbd "") 'meine-hallo-Wiederholung)

Halten Sie nun die Taste home gedrückt, um HELLO! zu wiederholen.

Ich verwende dieselbe Technik in mehreren Bibliotheken, einschließlich Lesezeichen + , thing-cmds und wide-n .

    
Drew 07.10.2011 04:43
quelle
0

smartrep ist alles, was Sie wollen

%Vor%     
driftcrow 16.10.2014 16:18
quelle

Tags und Links