Jawaban singkat untuk pertanyaan apa pun dari formulir "Apakah ada cara untuk _____ dalam emacs?" is Always "YA"
Brian Postow
Jawaban:
4
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):
(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)))
paket string-inflectionlebih lengkap sekarang: github.com/akicho8/string-inflection (perhatikan bahwa ada juga string-inflection-camelize-loweruntuk mengubah hello_worldke helloWorld).
Ehvince
2
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.
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):
sumber
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.sumber
Moritz Bunkus menulis fungsi elisp untuk beralih antara CamelCase dan c_style
sumber
string-inflection
lebih lengkap sekarang: github.com/akicho8/string-inflection (perhatikan bahwa ada jugastring-inflection-camelize-lower
untuk mengubahhello_world
kehelloWorld
).Hanya untuk tujuan tampilan, Anda dapat menggunakan ini:
Jika Anda ingin skrip yang benar-benar mengubah teks, saya kira Anda harus menulis beberapa elisp. Pertanyaan itu lebih baik ditanyakan pada stack overflow.
sumber
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:
sumber