zshのキーバインドで使用できるキーを増やすには、zkbd
を使用する。
zkbdの読み込み
zkbd
を利用するには以下のコマンドを使用する。
typeset -fuz zkbd
これでzkbd
コマンドが使用できるようになる。
zkbdの設定
キーバインドで使用できるキーを増やすためにはキー定義ファイルを作成しなければならない。
zkbd
では対話的にキー定義ファイルを作成できる。
zkbdコマンドを実行
zkbd
コマンドを実行して、キー定義ファイルを作成する。
zkbd
ターミナルの種類を設定
はじめにターミナルの種類を聞かれる。デフォルトで変数$TERM
の値がセットされているのでそのままEnterを押す。
Enter current terminal type: [xterm-256color]
キーを入力
まずはじめに説明が表示されるのだが、英語である。
We will now test some features of your keyboard and terminal. If you do not press the requested keys within 10 seconds, key reading will abort. If your keyboard does not have a requested key, press Space to skip to the next key.
Hold down Ctrl and X:
適当に訳すと、「10秒以内に要求したキーを押さないと処理は中断される。指定されたキーが存在しない場合はスペースキーを押すことでスキップできる。」といった感じである。
Ctrl + x を入力
さっきの説明の一番下に「Hold down Ctrl and X:」と出ているので、Ctrl
キーとx
キーを押す。
Hold down Ctrl and press X:
Meta + x を入力
Hold down Meta and press X:
と出るので、windows
キーとx
キーを押す。MacBookにはwindows
キーが無いのでCmd
キーを押した。
Your Meta key may have a Microsoft Windows logo on the cap. Hold down Meta and press X:
Alt + x を入力
Hold down Alt and press X:
と出るので、Alt
キーとx
キーを押す。MacBookにはAlt
キーが無いのでSpace
キーを押した。
Hold down Alt and press X:
作業説明:1
.zshrc
にbindkey -m
を追記しろと言っている。a
で次に進む。
You may enable keybindings that use the key by adding
bindkey -m
to your /Users/vorfeeProBook/dot/zsh/.zshrc file.
Press a key to proceed:
作業説明:2
いろんなキーを押してもらうけど焦って次のキーを押さないで!と言っている。a
で次に進む。
You will now be asked to press in turn each of the 12 function keys, then the Backspace key, the 6 common keypad keys found on typical PC keyboards, plus the 4 arrow keys, and finally the Menu key (near Ctrl on the right). If your keyboard does not have the requested key, press Space to skip to the next key. Do not type ahead! Wait at least one second after pressing each key for zsh to read the entire sequence and prompt for the next key. If a key sequence does not echo within 2 seconds after you press it, that key may not be sending any sequence at all. In this case zsh is not able to make use of that key. Press Space to skip to the next key.
Press a key when ready to begin:
大量のキーを入力
言われたとおりに入力する。
定義ファイルを読み込む
.zshrc
に下記を追加する。
if [[ -f $ZDOTDIR/.zkbd/$TERM-${${DISPLAY:t}:-$VENDOR-$OSTYPE} ]]; then source $ZDOTDIR/.zkbd/$TERM-${${DISPLAY:t}:-$VENDOR-$OSTYPE} fi
実際にbindkeyする
お好きなように.zshrc
に追加する。
以下に例を示す。
[[ -n "${key[Home]}" ]] && bindkey "${key[Home]}" begining-of-line [[ -n "${key[End]}" ]] && bindkey "${key[End]}" end-of-line [[ -n "${key[Insert]}" ]] && bindkey "${key[Insert]}" overwrite-mode [[ -n "${key[Delete]}" ]] && bindkey "${key[Delete]}" delete-char
どんなキー定義があるかは作成した定義ファイルを見るとわかる。key
という名前の連想配列で定義されている。
bindkey
についてはZLE
(Zsh Line Editor)のマニュアルを参照するといい。