Misalnya, saya ingin mengonversi "CamelCasedName" menjadi "camel_cased_name". Apakah ada cara untuk melakukan ini di emacs?
Misalnya, saya ingin mengonversi "CamelCasedName" menjadi "camel_cased_name". Apakah ada cara untuk melakukan ini di emacs?
Jawaban:
Ini sedikit kode dari halaman ini , dengan fungsi pembungkus dan garis bawah menggantikan tanda hubung dengan garis bawah, dapat dengan mudah diubah menjadi perintah untuk melakukan itu. (Periksa apakah itu memperlakukan caps terkemuka yang sesuai dengan Anda):
Contoh kode EmacsLisp untuk membatalkan CamelCase sebuah string (dari 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 memiliki mode kacamata yang menampilkan nama camelcase dengan garis bawah di antaranya. (Lihat juga http://www.emacswiki.org/emacs/GlassesMode ).
Jika Anda ingin benar-benar mengubah teks file M-x query-replace-regexpmungkin cocok.
Moritz Bunkus menulis fungsi elisp untuk beralih antara CamelCase dan c_style
string-inflectionlebih lengkap sekarang: github.com/akicho8/string-inflection (perhatikan bahwa ada juga string-inflection-camelize-loweruntuk mengubah hello_worldke helloWorld).
Hanya untuk tujuan tampilan, Anda dapat menggunakan ini:
M-x glasses-mode
Jika Anda ingin skrip yang benar-benar mengubah teks, saya kira Anda harus menulis beberapa elisp. Pertanyaan itu lebih baik ditanyakan pada stack overflow.
Saya bisa melakukan ini di seluruh file dengan cepat hanya dengan permintaan ganti regexp .
Pola pencarian adalah \([a-z]+\)\([A-Z]\)\([a-z]+\)dan penggantiannya \1_\,(downcase \2)\3.
Pola penggantian menggunakan hak kanan dalam pola. Ini membutuhkan Emacs 22 atau lebih baru.
Dalam gaya dokumentasi emacs:
M-C-% \([a-z]+\)\([A-Z]\)\([a-z]+\) RET \1_\,(downcase \2)\3