zsh+tmuxな環境でなぜかキーバインドが変わってしまう問題を解決した
はじめに
僕は普段zshからtmuxを立ち上げて作業をしているのですが、その時だけ「C-a
で行頭にジャンプ」等のキーバインドが使えずに困っていました。
ターミナルを立ち上げた時のzshでは普通に使える、という状態だったのでしばらく放置していたのですが、さすがに不便になってきたので色々調べたところ、割とあっさりと解決したので原因と対策をまとめました。
原因
.zshrc
または.zprofile
において、環境変数EDITOR
の値をvi
に設定していると、子プロセスのzshではキーバインドがvimモードになってしまうようです。
というわけで、tmuxは関係なく、子プロセスのzshにおいて起きる問題みたいです。
一応検証してみました。
% bindkey "^A" "^A" beginning-of-line % zsh % bindkey "^A" "^A" self-insert
確かに、子プロセスではキーバインドが変わっていることがわかります。
対策
.zshrc
にbindkey -e
(emacsモード)と明示的に指定することで解決します。
おわりに
調べてる過程で気づいたんですが、シェルのC-a
とかその他もろもろのキーバインドってむしろemacsに似せてる*1んですね・・・
shellのC-aで行頭移動するのとか、その他もろもろのキーバインドってemacsから来てたのか・・・ エディタはviから始めた人間だったので、ここらへんの全部shell固有のものだと思ってた・・・/(^o^)\
— yasaichi (@_yasaichi) 2014, 12月 6
無知すぎて恥ずかしい。