joppot

コピペで絶対動く。説明を妥協しない

ソフトウェア

iTerm2上のemacsで C-; C-: C-> C-< C-. C-, 記号キーバインドが入力できないのを解決する

投稿日:

Pocket

概要

みなさんこんにちはcandleです。今回はiTerm2上の記号系のキーバインドが使えない問題を解決します。
iTerm2上のemacsは基本的に control + 記号のキーバインドが使えません。
詳しいことはこちらの記事に書かれています。

http://memo.sugyan.com/entry/20120224/1330051378

どうやらctrlキーが制御できるASCIIの範囲が決まっているらしいです。

今回の記事はこちらの記事を参考にさせてもらいました。
記号のキーバインドは数年前挑戦して、挫折したのですが、本当に助かりました。
ありがとうございます。
また、下の記事ではControll + Shift + 記号のキーバインドにも対応した書き方をしているので、
そちらに挑戦したい方はぜひ参考にしてください。

http://d.akinori.org/2012/01/02/


前提

emacsを使っている。
iTerm2を使っている。

SPONSORED LINK


設定の方針

まず、概要にも書いた様に、iterm2では直接 control + 記号のキーバーンドは打てません。
そこでemacsの機能を使ってあたかもcontrol + 記号を打った様にするわけです。

私はあまりemacsの細かいことはわからないので、先ほどの記事から引用させていただきました。

実はEmacsにはいわゆるスティッキー修飾キーに相当するevent-apply-*-modifierというギミック的関数が用意されており、たとえばC-x @ c(event-apply-control-modifier)と押してからRETを押すと、C-RETを押したのと同じことになる。

この機能を使います。

例えば、C-. を実現するなら C-x @ c .とします。
試しにemacs上でC-x @ c .と実行すればC-.と同じアクションが実行されるでしょう。
もちろんそのキーバインドが設定されていればですが。

次に、iterm2の機能でグローバルなショートカットキーを使います。
iterm2で「C-.」と打った時、emacsには「C-x @ c .」を送信する様にしれば、C-.のキーバインドが使えるということです。



iterm2のキー設定

iterm2を開いて、上のメニューから「iTerm2」から「Preferences…」を選びます。
「Keys」を選び、+ボタンを押します。

試しに C-.を追加します。

keybord shortcutのフィールドがアクティブな状態で 「control + .」を打ち込みます。打ち込むと「^.」となります。
次にプルダウンメニューから「Send Hex Code」を選びます。
新しく出てきたテキストフィールドに以下を記述します。

18 40 63 2e

このHex codeはこの様に対応しています。

18 = C-x
40 = @
63 = c
2e = .

つまり

C-x @ c .

になっています。
okボタンを押しましょう。

他のキーバインドは以下の様になっています。

ショートカットキー Hex code
C-, 18 40 63 2c
C-. 18 40 63 2e
C-: 18 40 63 3a
C-; 18 40 63 3b
C-< 18 40 63 3c
C-> 18 40 63 3e

注意してほしいのは
「C-<」は Control + Shift + < で 「C->」は Control + Shift + >で登録します。

上の画像をみてもわかる様に、違っているのは最後のhex codeだけです。
他にも C-(やC-/などを割り当てたい方は以下のサイトの表からhex codeを参照してください。

http://www9.plala.or.jp/sgwr-t/c_sub/ascii.html

iterm2の設定は以上です。

emacsでキーを割り当てる

試しに、先ほど設定したC-.に割り当てます。
ファイルのパスを表示する関数を作りショートカットを割り当ています。
emacsの設定ファイルを開きます。

emacs .emacs.d/init.el

以下を書き込みます。

(defun show-file-name ()
  "Show the full path file name in the minibuffer."
  (interactive)
  (message (buffer-file-name)))

(global-set-key (kbd "C-.") 'show-file-name)

保存して、設定ファイルを再読み込みします。

M-x eval-buffer

そして先ほどのC-.を実行します。

C-.

するとファイル名が下のところに表示されます。

これはつまり、キーボードで入力した C-. がiterm2で C-x @ c .
に変換されemacs上でうまくキーバインドが機能したことをあらわしています。

うまくいきました。

まとめ

この方法をとれば、より多くのショートカットキーを簡単なキーバインドで定義できるようになります。
emacsを使った素早いコーディングが可能になりますね。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-ソフトウェア
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

wordpressでタグをボタンで挿入できる種類を増やす-AddQuicktag

概要 みなさんこんにちはcandleです。wordpressの記事を書いている時、 タグの挿入がもっと楽になれば便利なのにと思いました。私は記事の見出しはh3タグを使用しているのですが、h3タグのボタ …

Aptana Studio 3でソースコードのどこにカーソルがあっても改行する方法

概要 みなさんこんにちはcandleです。今回はAptana Studio 3の素晴らしい機能の1つを紹介します。 改行はソースコードを書く上では大変重要になります。 新しくコードを書いている時は改行 …

Mac OS MavericksにX11(Xquartz)をインストールする

概要 みなさんこんにちはcandleです。今回はX11のインストールを行います。MavericksからかMountain Lionからか忘れましたが、MacではX11が標準でインストールされなくなりま …

iphoneの画面の明るさを簡単に調整するたった1つの方法

概要 みなさんこんにちはcandleです。iphone画面の画面の明るさを簡単に調整する方法を紹介します。 実はこの機能に気づくまでは、毎回「設定」から「画面表示と明るさ」で調整していました。 前提 …

Xcode5にCommand Line Tools(コマンドラインツール)をインストールする

概要 Xcodeを使ってみようと思っているcandleです。 特にOpenCVを使用したいので、Command Line Tools(コマンドラインツール)をインストールするわけですが、どうやら、ちょ …

  • English
  • 日本語

プロフィール


ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー

twitter

スポンサードリンク

アーカイブ