2014-02-22 16 views
8

ich in Ubuntu arbeiten, aber da die übliche Weise Unicode-Zeichen einzufügen (Ctrl +Umschalt +U und danach wird der Unicode-Code) nicht innerhalb von emacs arbeiten, ich habe in meinem .emacs, einige Tastenanschläge für verschiedene Unicode-Zeichen, die ich häufig verwenden, zum Beispiel:Key-Bindung für § Symbol in Emacs

(global-set-key (kbd "C-c b") "☛") 

und jedes Symbol funktioniert gut, außer dem Symbol §, die durch eine einfache ersetzt Strich ("-") wenn ich den entsprechenden Tastendruck verwende:

(global-set-key (kbd "C-c y") "§") 

Die Frage ist, was macht dieses Symbol für andere Symbole anders und wie kann ich mein Problem lösen?

Antwort

7

global-set-key erwartet in der Regel eine Funktion, so sollte diese Arbeit:

(global-set-key (kbd "C-c y") (lambda() (interactive) (insert "§"))) 

Aber du bist besser dran, die hervorragende insert-char Funktion:

(global-set-key (kbd "<f2> u") 'insert-char) 

Es versteht Unicode Hex sowie Textbeschreibung (mit Abschluss und alles). Drücken Sie einfach TAB, um die Fertigstellungen zu sehen.

+0

Ihre erste Lösung funktioniert gut. Vielen Dank. –

2

können Sie Unicode-Zeichen in Emacs einfügen, indem Sie C-xRET<unicode-hex>RET. So einfügen § tun C-xRET 00A7 RET.

können Sie binden insert-char (den Befehl von CxRET) zu einem einfacheren Schlüssel, wenn Sie möchten, oder eine benutzerdefinierte Funktion definieren und binden Sie es an einem Schlüssel als

(global-set-key (kbd "C-c y") (lambda() (interactive) (insert "§"))) 
+0

Ja, ich weiß, aber dieser Ansatz ist zu "irritierend", wenn ich dieses Symbol häufig schreiben muss. –

1
folgt

Eine allgemeine Lösung zu der Notwendigkeit, eine Reihe von Unicode-Zeichen schnell einzufügen, ist ein Befehl für jede definieren, gewidmet, um es einzufügen, und binden Sie diesen Befehl an eine einfache Tastenfolge.

Das heißt, daß in der Tat ist, was @ abo-abo und @Iqbal haben angeboten, und in Form von:

(lambda() (interactive) (insert "§"))) 

Wenn Sie mehrere solche Zeichen, die Sie solche Befehle erstellen möchten,

  • Es bietet eine Makro, ucsc-make-commands, die Sie in einem lässt: auf zwei Arten -, dann Bibliothek ucs-cmds.el kann helfen fiel, definieren Sie Befehle für ganze Bereiche von Unicode-Zeichen. Zum Beispiel:

    • (ucsc-make-commands "^cjk") definiert einen Insert-char-Befehl für jede Chinesisch, Japanisch und Koreanisch Unicode-Zeichen.

    • (ucsc-make-commands "^greek [a-z]+ letter") macht das gleiche für jeder griechischen Buchstaben.

    • (ucsc-make-commands "arabic") macht das gleiche für jeweils arabisches Zeichen.

  • Es stellt einen Ersatz Befehl (ucsc-insert) für C-x 8 RET, die genau das gleiche wie der Vanille-Befehl wirkt (insert-char), mit der Ausnahme, dass, wenn Sie ihm ein negatives Vorzeichen Argument geben dann fügt sie nicht nur die Char Sie wählen, aber es auch erstellt einen Einfügebefehl dafür (dh die Art von Befehl, den das Makro in großen Mengen erstellt).

Die Namen der Befehle, die von Makro ucsc-make-commands und Befehl erstellt ucsc-insert sind genau die gleichen wie die Unicode Namen der Zeichen selbst, mit der Ausnahme, dass sie Klein sind und Bindestriche (-) anstelle von Raum Zeichen.