私はmacOS / darwinで「デフォルト」のzsh環境を使用しています(「oh-my-zsh」などは使用しません)。
インストールしたばかりの開発ツールは、私が定期的に使用しているいくつかのキーバインディング(emacsスタイルのcontrol-aとcontrol-e「行の始まり」と「行の終わり」カーソルの移動)を破ったようです。 control-a と入力すると、^A
トークンがプロンプトに挿入されます。システムのマイユーザーアカウントのみが影響を受けます。キーボードショートカットは追加の設定なしで機能するため、同じシステムの新しいユーザーアカウントは影響を受けません。
影響を受ける環境と影響を受けない環境を比較すると、結果がbindkey
異なります。内部にうまくいく環境ではbindkey
49行を出力しますが、影響を受けなかった環境ではbindkey
120ラインを出力します。私の考えでは、これは問題の原因は明らかですが、根本的な原因ではありません。
追加の調査:影響を受けたシェルから$ bindkey -lL
次を返します。
bindkey -N command
bindkey -N emacs
bindkey -N isearch
bindkey -A viins main
bindkey -N vicmd
bindkey -N viins
bindkey -N viopp
bindkey -N visual
影響を受けないシェルでは、ライン4が次のようになることを除いて同じです。
bindkey -A emacs main
これは私が見ている動作に意味があるようです。私が期待していたemacsスタイルのバインディングは、他のスタイルバインディングに置き換えられました。
私はまだバインドキーがどのように動作するかわからないので、システムのどこかに確認できる状態があるのか、それともシェル初期化ファイルのためにこのようなことが起こるのか疑問に思います。後者は、私のユーザープロファイルにあるシェルのコンテキストだけを知って影響を与え、すでにこれに対する制御権を持っていると信じているので、混乱する可能性があり~/.zshenv
ます~/.zshrc
。 (シェルのロード時にインポートされたすべての初期化ファイルを一覧表示する方法はありますか?)
最終的に問題を引き起こす原因が何であるかを知り、私がインストールした開発者ツールにバグレポートを提出できるようにしたいと思います。
答え1
bindkey -A … main
main
キーマップとは何かを定義します。これmain
キーマップ行の編集を開始するたびにエディタで使用されます。したがって、変更された点は主キーマップです。デフォルトでは、zshはEmacs編集モードではなくVi編集モードにデフォルト設定されますviins
。emacs
あなたが上書きしない限り.zshrc
、zshは、あなたが好むエディタがViであると思われる場合はデフォルトでVi編集モードに設定され、そうでなければEmacs編集モードに設定されます。より正確には、「あなたのお気に入りのエディタがViのようです」は次のように定義されています。
VISUAL
環境変数の1つに「」EDITOR
文字列が含まれている場合vi
今何かがこれらの変数の1つまたは両方を設定しているようです。この問題を解決するには:
- 名前付きエディタを
vi
デフォルトエディタとして使用するにはbindkey -e
(またはbindkey -A emacs main
)を追加して、.zshrc
zshの考えに関係なくzshのEmacs編集モードを好むようにzshに指示します。 - デフォルトエディタが必要ない場合は、環境変数が設定されている場所を見つけてこの設定を削除してください。
答え2
main
インストールしたツールがキーマップをから(を実行して)emacs
に変更したようです。デフォルトに戻すには、次の手順を実行します。viins
bindkey -v
main
emacs
bindkey -e
バラより