読者です 読者をやめる 読者になる 読者になる

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

確かに、子プロセスではキーバインドが変わっていることがわかります。

対策

.zshrcbindkey -eemacsモード)と明示的に指定することで解決します。

おわりに

調べてる過程で気づいたんですが、シェルのC-aとかその他もろもろのキーバインドってむしろemacsに似せてる*1んですね・・・

無知すぎて恥ずかしい。

参考

*1:より正確には、readlineのデフォルトのキーバインドemacsに似ている、かな。