Zum Beispiel möchte ich "CamelCasedName" in "camel_cased_name" konvertieren. Gibt es eine Möglichkeit, dies in Emacs zu tun?
Zum Beispiel möchte ich "CamelCasedName" in "camel_cased_name" konvertieren. Gibt es eine Möglichkeit, dies in Emacs zu tun?
Antworten:
Dieses kleine Stück Code von dieser Seite mit einer Wrapper-Funktion und einem Unterstrich, der den Bindestrich durch einen Unterstrich ersetzt, könnte leicht in einen Befehl umgewandelt werden, um dies zu tun. (Überprüfen Sie, ob die führenden Kappen zu Ihnen passen):
Beispiel für einen EmacsLisp-Code zum Entfernen von CamelCase für eine Zeichenfolge (von http://www.friendsnippets.com/snippet/101/ ):
(defun un-camelcase-string (s &optional sep start)
"Convert CamelCase string S to lower case with word separator SEP.
Default for SEP is a hyphen \"-\".
If third argument START is non-nil, convert words after that
index in STRING."
(let ((case-fold-search nil))
(while (string-match "[A-Z]" s (or start 1))
(setq s (replace-match (concat (or sep "-")
(downcase (match-string 0 s)))
t nil s)))
(downcase s)))
Emacs hat brillen Modus die Displays Namen mit Unterstrichen Camelcase dazwischen. (Siehe auch http://www.emacswiki.org/emacs/GlassesMode ).
Wenn Sie den Text der Datei tatsächlich ändern möchten, M-x query-replace-regexp
ist dies wahrscheinlich geeignet.
Moritz Bunkus hat eine Elisp-Funktion geschrieben, um zwischen CamelCase und c_style umzuschalten
string-inflection
ist vollständiger jetzt: github.com/akicho8/string-inflection (Anmerkung , dass es auch string-inflection-camelize-lower
Änderungen hello_world
an helloWorld
).
Sie können dies nur zu Anzeigezwecken verwenden:
M-x glasses-mode
Wenn Sie ein Skript möchten, das den Text tatsächlich konvertiert, müssen Sie wahrscheinlich etwas Elisp schreiben. Diese Frage wird beim Stapelüberlauf besser gestellt.
Ich war in der Lage, dies über eine ganze Datei schnell mit nur einer Abfrage zu tun, um regulären Ausdruck zu ersetzen .
Das Suchmuster ist \([a-z]+\)\([A-Z]\)\([a-z]+\)
und der Ersatz ist \1_\,(downcase \2)\3
.
Das Ersatzmuster verwendet elisp direkt im Muster. Dies erfordert Emacs 22 oder höher.
Im Emacs-Dokumentationsstil:
M-C-% \([a-z]+\)\([A-Z]\)\([a-z]+\) RET \1_\,(downcase \2)\3