タイトルの通り。端末(ターミナル)でCtrl+a
や、Ctrl+e
など押しても先頭・文末に移動できない…^A
、^E
と出力されるだけ。
どうしてか?と思ってググると [SOLVED] CTRL + [key] at Terminal Not Working / Newbie Corner / Arch Linux Forumsに辿りついた。
Ctrl-a and Ctrl-e are readline bindings (in Emacs mode); Zsh uses zle.
ZLE has an Emacs mode and a vi mode. If one of the VISUAL or EDITOR environment variables contain the string vi then vi mode will be used; otherwise, it will default to Emacs mode. Set the mode explicitly with bindkey -e or bindkey -v respectively for Emacs mode or vi mode.
zsh
をデフォルトシェルにしているとき、環境変数VISUAL
またはEDITOR
にvi
の文字を含んでいると viモード になってしまうのか…
余計なお世話と思ってしまうが、Vimmerであれば viモード で端末も操作したいのは当然だろう。
ターミナルでのキーバインド設定を確認すると
$ bindkey
"^A"-"^C" self-insert
"^D" list-choices
"^E"-"^F" self-insert
となっている。bindkey -e
とすることで
$ bindkey
"^A" beginning-of-line
"^B" backward-char
"^D" delete-char-or-list
"^E" end-of-line
と端末でのキーバインドが元に戻った( emcasモード となった)。
~/.zshrc
bindkey -e
と追記することで解決したが、もっとスマートな方法ないだろうか?まあ、いいや。