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-regexp
mungkin cocok.
Moritz Bunkus menulis fungsi elisp untuk beralih antara CamelCase dan c_style
string-inflection
lebih lengkap sekarang: github.com/akicho8/string-inflection (perhatikan bahwa ada juga string-inflection-camelize-lower
untuk mengubah hello_world
ke 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