Help us understand the problem. What is going on with this article?

Emacsのキーバインドを自分流に変更しようとしたら少しだけハマった話。

More than 3 years have passed since last update.

要約

Emacsのキーバインドを、次のように変更したらすごい便利になったよ!

  • C-z : ウィンドウ切り替え(other-window)
  • C-c c : コンパイル(compile)
  • C-c x : quickrunでスクリプト実行(quickrun)
  • M-RET : helm-mini

環境

  • Emacs 24.5.1
  • helmとquickrun.elはインストール済みという前提

やったこと

.emacsとか.emacs.d/init.elとかに次を追記してEmacsを再起動。

.emacs
;;;;;;;;;;;;;;;;;;;;;;;; key-bind settings ;;;;;;;;;;;;;;;;;
;; Execute script
(define-key global-map (kbd "C-c x") 'quickrun)

;; Compile
(define-key global-map (kbd "C-c c") 'compile)

;; move window by C-z
(define-key global-map (kbd "C-z") 'other-window)

;; assign helm-mini to C-c h
(define-key global-map (kbd "M-RET") 'helm-mini)

ちなみにキーバインドの設定弄った場合、設定ファイルのバッファを再読み込みするだけじゃ上手く行かないこともあるので、筆者は大人しく再起動してます。

え、それのどこにハマる要素あんの?

実は最初、helm-miniをCtrl-m(デフォルトでは改行)に割り当てようとしたのだが、それをやると何故かEnterでhelm-miniが開くように(´・ω・`)

色々ググった結果、以下の記事
http://qiita.com/blue0513/items/c49b17790367790fdd7c
にて

Keys to Avoidの文字.
(中略)

【Ctrl+m】 or Enter ↵ (These are tied together.)

な,なんだってーーーー!!!

という記述を見つけ、「な、なんだってー!!!」と叫んだわけです。
要するに、Ctrl+mとEnterは完全に連動してしまっているので、片方を変えたら必ずもう片方も影響受けちゃうよ、と。

どうやら、ターミナルではCtrl+mは改行なので(知らなかったorz)、Emacsでもそれに合わせてこういう設定になってるらしいです。

まとめ

Ctrl+mは使わないからって無闇にコマンド割り当てると困ったことになるよ!
気をつけよう!

参考記事

http://qiita.com/blue0513/items/c49b17790367790fdd7c

pinokions009
どうも。Linuxが好きです。 最近競プロを始めました。 どうぞよろしくお願い致します。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away