Краткий ответ на любой вопрос формы "Есть ли способ _____ в Emacs?" всегда "ДА"
Брайан Постоу
Ответы:
4
Этот небольшой кусочек кода с этой страницы с функцией-оберткой и подчеркиванием, заменяющим дефис подчеркиванием, можно легко превратить в команду для этого. (Убедитесь, что он подходит для ведущих заглавных букв):
(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)))
пакет string-inflectionтеперь более полный: github.com/akicho8/string-inflection (обратите внимание, что есть также, string-inflection-camelize-lowerчтобы изменить hello_worldна helloWorld).
Ehvince
2
Только для отображения, вы можете использовать это:
M-x glasses-mode
Если вам нужен скрипт, который на самом деле преобразует текст, я думаю, вам придется написать немного elisp. Этот вопрос лучше задать при переполнении стека.
Ответы:
Этот небольшой кусочек кода с этой страницы с функцией-оберткой и подчеркиванием, заменяющим дефис подчеркиванием, можно легко превратить в команду для этого. (Убедитесь, что он подходит для ведущих заглавных букв):
источник
В Emacs есть режим очков, в котором имена верблюдов отображаются с подчеркиванием между ними. (См. Также http://www.emacswiki.org/emacs/GlassesMode ).
Если вы хотите на самом деле изменить текст файла
M-x query-replace-regexp
, вероятно, подходит.источник
Мориц Банкус написал функцию elisp для переключения между CamelCase и c_style
источник
string-inflection
теперь более полный: github.com/akicho8/string-inflection (обратите внимание, что есть также,string-inflection-camelize-lower
чтобы изменитьhello_world
наhelloWorld
).Только для отображения, вы можете использовать это:
Если вам нужен скрипт, который на самом деле преобразует текст, я думаю, вам придется написать немного elisp. Этот вопрос лучше задать при переполнении стека.
источник
Я смог быстро сделать это для всего файла с помощью регулярного выражения замены запроса .
Шаблон поиска есть
\([a-z]+\)\([A-Z]\)\([a-z]+\)
и замена есть\1_\,(downcase \2)\3
.Шаблон замены использует elisp прямо в шаблоне. Для этого требуется Emacs 22 или более поздняя версия.
В стиле документации emacs:
источник