vimをzshでEDITORとしてエクスポートすると、キーボードショートカットが無効になるのはなぜですか?


23

.zshrcはこのように見えます:

export EDITOR="/usr/bin/vim"

ターミナルを開いて、キーボードショートカットを入力しctrlaて行の先頭に移動すると、機能しません。代わりに、文字列^A(または入力したショートカットに応じて他の文字列)が端末に入力されます。

emlai:~ % ^A

export私から単語を削除.zshrcすると、キーボードショートカットが適切に機能します。

EDITOR="/usr/bin/vim"

キーボードショートカットを機能させるEDITOR以外の何かとしてエクスポートするとvim、たとえば:

export EDITOR="/usr/bin/nano"

なぜこれが起こるのですか?

bashもこれをテストしましたが、キーボードショートカットはすべての場合に適切に機能します。

回答:


27

zsh:最も近代的なシェルのようなコマンドライン編集用の2つの異なるキーボードマッピングの間の選択持ちvi1とemacs1を。一部のシェル(のような、tcshまたはのようなreadlineベースのシェルbash)では、これemacsがデフォルトであり、おそらくあなたが期待するものです。

ではzsh、あなたが得るemacsデフォルトでモードをしない限り、$EDITORまたは$VISUAL含まれているvi(あなたがしている場合vi/ nvi/ vim/ elvisユーザーを(もかかわらず、vimacsかつ場合$EDITORである...)、お好みのを前提としていモード)。/home/victor/bin/emacszshvi

の値に関係なく特定のモードを強制するには$EDITOR、次を追加します。

bindkey -e # for emacs
bindkey -v # for vi

またはよりポータブルな同等物:

set -o emacs
set -o vi

~/.zshrc。見る

info -f zsh -n Keymaps

詳細については。


面白い。bindkey以上を使用する理由はありますset -oか?
天頂

@zenith、おそらくそうではありません。bindkeytcshの方法であり、元の方法です。現在、それらは同等である必要があります。
ステファンシャゼル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.