EmacsでM-f、あるいはM-bで単語単位の移動をすると、通常は英文字の大文字小文字を区別しない。そのため、たとえば moveToNextWord() の先頭でM-fすると、カーソルは ( の前に移動する。しかし、最近業務で使っているGoでは、コーディング規約上キャメルケースを使うので、M-fによる移動をキャメルケースの途中の大文字の箇所で区切って欲しいことが多々ある。
そのような場合はsubword-modeを使うと良い。
20-go-mode.el
(defun my-go-mode-hook
(subword-mode 1))
(add-hook 'go-mode-hook 'my-go-mode-hook)
これで、上と同じ状況でM-fすると、カーソルはTの前に移動する。
ちなみに、全てのメジャーモードでこれを有効にしたいときには、(global-subword-mode 1)
でOK。
ただし、この方法、人によってはちょっとした不都合があるかもしれない。
と言うのは、たとえばmoveToNextWord()のvの前にカーソルがある状態で、M-t
(transpose-words)すると、結果はTomoveNextWord()となり、toMoveNextWord()とはならないからだ。
でも自分の場合、transpose-wordsを使ってないのでとりあえずこれで問題なし。
確認環境
GNU Emacs 24.5.1