Krótka odpowiedź na dowolne pytanie w formularzu „Czy jest jakiś sposób na _____ w emacs?” jest zawsze „TAK”
Brian Postow
Odpowiedzi:
4
Ten mały fragment kodu z tej strony , z funkcją otoki i znakiem podkreślenia zastępującym łącznik znakiem podkreślenia, można łatwo przekształcić w polecenie, aby to zrobić. (Sprawdź, czy pasują do Ciebie najlepsze czapki):
(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)))
pakiet string-inflectionjest teraz bardziej kompletny: github.com/akicho8/string-inflection (pamiętaj, że należy również string-inflection-camelize-lowerzmienić hello_worldna helloWorld).
Ehvince
2
Wyłącznie do celów wyświetlania możesz użyć tego:
M-x glasses-mode
Jeśli chcesz skrypt, który faktycznie konwertuje tekst, wyobrażam sobie, że będziesz musiał napisać trochę elisp. To pytanie lepiej zadać w przypadku przepełnienia stosu.
Odpowiedzi:
Ten mały fragment kodu z tej strony , z funkcją otoki i znakiem podkreślenia zastępującym łącznik znakiem podkreślenia, można łatwo przekształcić w polecenie, aby to zrobić. (Sprawdź, czy pasują do Ciebie najlepsze czapki):
źródło
Emacs ma tryb okularów, który wyświetla nazwy wielbłądów z podkreślnikami pomiędzy nimi. (Zobacz także http://www.emacswiki.org/emacs/GlassesMode ).
Jeśli chcesz faktycznie zmienić tekst pliku,
M-x query-replace-regexp
prawdopodobnie jest to odpowiednie.źródło
Moritz Bunkus napisał funkcję elisp do przełączania między CamelCase i c_style
źródło
string-inflection
jest teraz bardziej kompletny: github.com/akicho8/string-inflection (pamiętaj, że należy równieżstring-inflection-camelize-lower
zmienićhello_world
nahelloWorld
).Wyłącznie do celów wyświetlania możesz użyć tego:
Jeśli chcesz skrypt, który faktycznie konwertuje tekst, wyobrażam sobie, że będziesz musiał napisać trochę elisp. To pytanie lepiej zadać w przypadku przepełnienia stosu.
źródło
Byłem w stanie to zrobić szybko dla całego pliku za pomocą tylko wyrażenia zastępującego wyrażenie regularne .
Wzorzec wyszukiwania jest,
\([a-z]+\)\([A-Z]\)\([a-z]+\)
a zamiennik jest\1_\,(downcase \2)\3
.Zastąpiony wzorzec używa elisp bezpośrednio we wzorcu. Wymaga to Emacsa w wersji 22 lub nowszej.
W stylu dokumentacji emacsa:
źródło