emacsでアンダースコアを使用するようにキャメルケース名を変換する方法はありますか?


8

たとえば、「CamelCasedName」を「camel_cased_name」に変換したいとします。emacsでこれを行う方法はありますか?


4
「emacsで_____する方法はありますか?」という形式の質問に対する短い回答 は常に「はい」
ブライアン・

回答:


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

クエリを正規表現に置き換えるだけで、ファイル全体でこれをすばやく実行できました。

検索パターンは\([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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.