新しい kernel が降りてきたので再起動したのですが,Ctrl + a の行頭移動や,Ctrl + e の行末移動が使えず ^A^E
と表示されるようになってしまいました.Ctrl + U など利用できるものもある.環境は以下のような感じです.
- OS: Debian testing stretch amd64
- Shell: zsh 5.0.8
- byobu backend: screen
- GNU Screen 4.03.01
GNU Screen を抜けると問題はありません.
最近 GNU Screen のアップデートがあった気がしたので,GNU Screen のせいかな?と思い以前野良ビルドした GNU Screen や Tmux で起動してみましたがこちらでも同じ現象が置きました.
% screen bash
の様にして bash を起動すると問題ありません.
GNU Screen 起動後でも bindkey
で以下のように設定すると動作します.
bindkey
のリストを確認すると GNU Screen 起動前 120行,GNU Screen 起動後では 34行と大分少なくなってしまっています.
とりあえず GNU Screen 起動前に ~/.zshrc
の precmd()
の中に bindkey -L
の結果を vim で :r!bindkey -L | sed -e 's/^/ /'
な感じで貼ってひとまず反映させました.
切り分けのために新しくユーザを作って chsh -s /bin/zsh
してまっさらな状態から試すと ~/.zshrc
を cp すると現象が起こりました.更に切り分けていくと .zshrc の中の export EDITOR=vim
でした.
% EDITOR=vim screen
で発症する.% EDITOR=emacs screen
はok…….その他 vi NG / jed, nano は ok と vi/vim を指定すると起きるよう.
検索するとこんなページが見つかりました.
環境変数 EDITOR
が vi/vim だと Zsh のキーバインドが vim モードになるということのようです.Esc -> 0
で行頭移動,Esc -> Shift+a
で行末に.確かに vim モードのようです.ということで ~/.zshrc
で emacs モードに設定することで解決しました.(上の方で設定した bindkey の設定は消しました)
腑に落ちないのは GNU Screen / Tmux 起動時には起こるけど普通の Zsh
起動時は起きないところ…….