2014年4月24日木曜日

[Emacs]C-oの挙動についての考察


Hi.

デフォルトのEmacsの挙動だとC-jにnewline-and-indent、C-mにnewline、C-oにopen-lineが割り当てられてて、結構頻繁に使うコマンドだと思います。
僕はopen-lineがカーソル以降の文章を改行した後にそれらをインデントしてくれないのがずっと納得できなくて悩んでいました。
そんなときにsmart-newlineが周りで話題になってたので入れてみました。
EmcasのC-mを便利にするsmart-newline.elを公開した - ainameの日記
とても便利っぽいけど、カーソル位置によって挙動が変わるのが僕のスタイルには合いませんでした。

で、結局自分で関数を自作することにしました。
(defun open-line-next-indent ()
  "Open a line and indent the next line."
  (interactive)
  (save-excursion
  (newline)
  (indent-for-tab-command))
  )
(global-set-key "\C-o" 'open-line-next-indent)
めっちゃ簡単な関数ですけどこれが僕にとって理想のC-oの挙動だと思いました。
一度にnewline-and-indentせずに、newlineしてからindent-for-tab-commandでインデントするのがミソだと思ってます。
newline-and-indentにしたら変な挙動になるので試したらいいと思います。

そんな感じで、C-oが最終的に満足のいく挙動になって良かったと思います(笑)。
みなさんも理想のC-oの挙動に出会ってくださいね。

0 件のコメント :

コメントを投稿