Macでキーバインドを変更する 〜KeyRemap4MacBook〜

WindowsUbuntuでは窓使いの憂鬱やのどかを使って、キーバインドを変更していました。
しかしMacだと窓使いの憂鬱はメジャーじゃないみたいなので、
KeyRemap4MacBookを使って、キーバインドを変更しました。

KeyRemap4MacBook
http://pqrs.org/macosx/keyremap4macbook/index.html.ja

ちゃんとドキュメントも充実していて、これをみれば迷わないでしょう。
http://pqrs.org/macosx/keyremap4macbook/document.html.ja

で、KeyRemap4MacBookは、自分でキーバインドを設定することができます。
やり方は、以下に書かれています。
http://pqrs.org/macosx/keyremap4macbook/document.html.ja#t3

要はprivate.xmlに設定を書くわけですね。
書き方は、公式サイトにも書かれていますが、checkbox.xmlを参考にするといいです。
https://github.com/tekezo/KeyRemap4MacBook/blob/master/files/prefpane/checkbox.xml

checkbox.xmlには、インストールされている全ての設定が記載されています。

で、自分のprivete.xmlは以下のようにしました。


    
        
            Eisuu+hjkl to Left/Down/Up/Right
            option.vimode_eisuu_hjkl
            --KeyOverlaidModifier-- KeyCode::JIS_EISUU, KeyCode::VK_MODIFIER_EXTRA1, KeyCode::JIS_EISUU
            --KeyToKey-- KeyCode::J, ModifierFlag::EXTRA1, KeyCode::CURSOR_LEFT
            --KeyToKey-- KeyCode::M, ModifierFlag::EXTRA1, KeyCode::CURSOR_DOWN
            --KeyToKey-- KeyCode::I, ModifierFlag::EXTRA1, KeyCode::CURSOR_UP
            --KeyToKey-- KeyCode::L, ModifierFlag::EXTRA1, KeyCode::CURSOR_RIGHT
            --KeyToKey-- KeyCode::O, ModifierFlag::EXTRA1, KeyCode::DELETE
	    --KeyToKey-- KeyCode::D, ModifierFlag::EXTRA1, KeyCode::D, ModifierFlag::CONTROL_L
            --KeyToKey-- KeyCode::F, ModifierFlag::EXTRA1, KeyCode::VK_JIS_TOGGLE_EISUU_KANA>
            --KeyToKey-- KeyCode::E, ModifierFlag::EXTRA1, KeyCode::JIS_EISUU
	    --KeyToKey-- KeyCode::N, ModifierFlag::EXTRA1, KeyCode::MINUS, ModifierFlag::SHIFT_L, KeyCode::DOT, ModifierFlag::SHIFT_L
        
    

で解説すると、
英数キー + j = 左キー
英数キー + i = 上キー
英数キー + l = 右キー
英数キー + m = 下キー
英数キー + d = Control + D
英数キー + o = DELETEキー
英数キー + F = IMEトグル
英数キー + E = IMEをOFFに
英数キー + N = => (←これはPHPのため。。)

という設定になっています。

あとは、
セミコロン = エンターキー
英数キー + セミコロン = セミコロン
にもしています。これは、デフォルトで用意されている設定にチェックを入れただけですね。
「Change Semicolon(;) Key」の中の 「Semicolon to Return (when there are not any modifiers)」 ってやつにチェックを入れてます。

このキーバインドにすると、指をホームポジションから離さずに、
カーソル移動や、文字の削除、エンターキーの押下が出来たりと、
かなり快適になります。
文字入力速度は、50%くらい上がった気がしますねー。
変態的なキーバインド設定かもしれませんが、お勧めです。

しかし、KeyRemap4MacBookは素晴らしいですね!
なにせ、デフォルトで用意されている設定の数が半端ない!
「Complete Vi Mode」なんて狂気のような設定もあります。
もうあまりに素晴らしい出来なので、
$30 DONATEしました。
今後もぜひ開発を継続して欲しいですね。

自分の.zshrcファイルを公開

Macで、さあzshを使おう!と思ったら、すでにMaczshがインストールされていました。
ということで

$ chsh -s /bin/zsh

として、再度ターミナルを立ち上げればzshがログインシェルになっています。
一応以下で確認。

$ echo $SHELL

で、次にホームディレクトリに「.zshrc」ファイルを作成します。
自分の.zshrcファイルはこんな感じになっています。

export LANG=ja_JP.UTF-8
HISTFILE=$HOME/.zsh-history
HISTSIZE=100000
SAVEHIST=100000

#パスの設定
PATH=/usr/local/bin:$PATH
export MANPATH=/usr/local/share/man:/usr/local/man:/usr/share/man

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias git='nocorrect git'

## 補完機能の強化
autoload -Uz compinit
compinit

autoload colors
colors
case ${UID} in
0)
  PROMPT="%B%{${fg[white]}%}%/#%{${reset_color}%}%b "
  PROMPT2="%B%{${fg[white]}%}%_#%{${reset_color}%}%b "
  SPROMPT="%B%{${fg[white]}%}%r is correct? [n,y,a,e]:%{${reset_color}%}%b "
  [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] && 
    PROMPT="%{${fg[white]}%}${HOST%%.*} ${PROMPT}"
  ;;
*)
  PROMPT="%{${fg[white]}%}%/%%%{${reset_color}%} "
  PROMPT2="%{${fg[white]}%}%_%%%{${reset_color}%} "
  SPROMPT="%{${fg[white]}%}%r is correct? [n,y,a,e]:%{${reset_color}%} "
  [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] && 
    PROMPT="%{${fg[white]}%}${HOST%%.*} ${PROMPT}"
  ;;
esac

## コアダンプサイズを制限
limit coredumpsize 102400

## 出力の文字列末尾に改行コードが無い場合でも表示
unsetopt promptcr

## 色を使う
setopt prompt_subst

## ビープを鳴らさない
#setopt nobeep

## 内部コマンド jobs の出力をデフォルトで jobs -l にする
setopt long_list_jobs

## 補完候補一覧でファイルの種別をマーク表示
setopt list_types

## サスペンド中のプロセスと同じコマンド名を実行した場合はリジューム
setopt auto_resume

## 補完候補を一覧表示
setopt auto_list

## 直前と同じコマンドをヒストリに追加しない
setopt hist_ignore_dups

## cd 時に自動で push
setopt autopushd

## 同じディレクトリを pushd しない
setopt pushd_ignore_dups

## ファイル名で #, ~, ^ の 3 文字を正規表現として扱う
setopt extended_glob

## TAB で順に補完候補を切り替える
setopt auto_menu

## zsh の開始, 終了時刻をヒストリファイルに書き込む
setopt extended_history

## =command を command のパス名に展開する
setopt equals

## --prefix=/usr などの = 以降も補完
setopt magic_equal_subst

## ヒストリを呼び出してから実行する間に一旦編集
setopt hist_verify

# ファイル名の展開で辞書順ではなく数値的にソート
setopt numeric_glob_sort

## 出力時8ビットを通す
setopt print_eight_bit

## ヒストリを共有
setopt share_history

## 補完候補のカーソル選択を有効に
zstyle ':completion:*:default' menu select=1

## 補完候補の色づけ
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}

## ディレクトリ名だけで cd
setopt auto_cd

## カッコの対応などを自動的に補完
setopt auto_param_keys

## ディレクトリ名の補完で末尾の / を自動的に付加し、次の補完に備える
setopt auto_param_slash

## スペルチェック
setopt correct

.zshrcファイルを作ったら、

source .zshrc

として、設定を反映させます。

いやーzshは便利ですね!もうbashには戻れません。
zsh可愛いよzsh