有没有办法将驼峰式名称转换为在emacs中使用下划线?


8

例如,我想将“ CamelCasedName”转换为“ camel_cased_name”。有没有办法在emacs中做到这一点?


4
对任何形式的问题的简短回答:“在emacs中有什么方法可以_____吗?” 总是“是”
Brian Postow'4

Answers:


4

该页面上的这小段代码具有包装函数和下划线,用下划线代替了连字符,可以很容易地将其转换为执行此操作的命令。(检查它是否适合您使用的大写字母):

示例EmacsLisp代码以取消驼峰式删除字符串(来自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)))



2

仅出于显示目的,您可以使用以下命令:

M-x glasses-mode

如果您想要一个实际转换文本的脚本,我想您将不得不写一些elisp。最好在堆栈溢出时问这个问题。


2

我只需查询替换regexp就可以在整个文件中快速完成此操作。

搜索模式为\([a-z]+\)\([A-Z]\)\([a-z]+\),替换为\1_\,(downcase \2)\3

替换模式在模式中使用elisp。这需要Emacs 22或更高版本。

在emacs文档样式中:

M-C-% \([a-z]+\)\([A-Z]\)\([a-z]+\) RET \1_\,(downcase \2)\3
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.