- 追加された行はこの色です。
- 削除された行はこの色です。
*目次 [#b8cbb30c]
#contents
*概要 [#p792bbcd]
emacsの正規表現の置換は置換するときに計算できて賢い感じ
**先頭を大文字にする置換 [#w97d5acb]
一致した箇所を先頭を大文字にする関数に渡すことができます。
;;置換前
foo
bar
baz
;;置換後
Foo
Bar
Baz
置換前のfooからbazまでを選択してから下記のコマンドを実行します。
M-x replace-regexp
Replace regexp: \(\w+\)
Replace regexp with: \,(capitalize \1)
**カウントアップさせる置換 [#mc406463]
;;置換前
<h1>foo</h1>
<h2>bar</h2>
<h3>baz</h3>
;;置換後
<h2>foo</h2>
<h3>bar</h3>
<h4>baz</h4>
同様に選択して、下記のコマンドを実行します。
M-x replace-regexp
Replace regexp: <\(/?\)h\([0-9]\)>
Replace regexp with: <\1h\,(1+ \#2)>
***参考 [#xacb4c49]
http://dminor11th.blogspot.jp/2011/02/emacslisp.html
*キャメルケースとスネークケースを相互変換 [#de0b3f50]
(defun camel-to-snake (s &optional do-upcase)
(let ((case-fold-search nil))
(funcall (if do-upcase 'upcase 'downcase)
(replace-regexp-in-string
"\\([A-Z]\\)" "_\\1"
(concat (downcase (substring s 0 1)) (substring s 1))))))
(defun snake-to-camel (s &optional capitalize)
(let ((case-fold-search nil))
(replace-regexp-in-string
"_\\([a-zA-Z]\\)"
(lambda (s2) (upcase (substring s2 1)))
(concat (if capitalize "_" "") s))))
**情報源 [#ibf31f12]
http://recyclebin5385.blog13.fc2.com/blog-category-4.html
*選択した文字列を変数に入れる例 [#n0c3bec5]
(defun get-select-text ()
(interactive)
(setq selected-text
(buffer-substring
(region-beginning)
(region-end)))
(insert selected-text))