私が知っている限り、およびはエミュレートするためにターミナルラインエディタの動作を変更するために使用され、およびはset -o emacs
キーバインディングをエミュレートするために使用されます。どちらも同じことをするようですので、両者の違いは何か、違いがあるのか知りたいです。bindkey -e
emacs
set -o vi
bindkey -v
vi
set -o
bindkey
set -o
ほとんどのシェルで動作してbindkey
いるようですが、zle
特定のコマンドが1つあります。これが唯一の違いですか?また、同じキーをバインドするのですか、それとも別のタスクにset -o
バインドされたいくつかのキーがありますか?bindkey
答え1
bindkey -v/-e
はtcsh
構文です(bindkey
組み込み関数は1990年5.19PL2でtcshに追加されました)が、set -o vi/emacs
ksh構文です(kshが少なくとも1983年の初めにemacs / viモードを持っていたので、おそらくそれ以前のksh85にあったでしょう)。
zleの最初のバージョンは1991年zsh
2.0に追加されましたbindkey
(1.0より前のバージョンで借りたreadline
)bash
。
zsh
最初のバージョン1.0ではsetopt
オプションを設定する必要がありました(csh
/ Bourneのコマンドラインを介して渡されたオプションを除く)、while(t)csh
とbash
特殊変数を使用する必要がありました。 2.0では、-o
作業可能なオプション(インタプリタと組み込みオプション)が追加されました(このオプション自体は、1996年2.0の新しい組み込みオプションで設定されたオプションに特殊変数を変換しました。これはオプションとは別のオプションセットでした)。 1990年にサポートが追加されました。set
ksh
bash
shopt
set -o
set -o
「オプションvi
」はemacs
そうではありません。2003年以前にzshに追加されましたしかし、バージョン4.1.1では。オプションを設定するとモードemacs
が無効になるため、「オプション」パラダイムはこの状況には適していませんvi
。
zsh -o emacs
現在、zsh -o vi
zshの起動に関する報告が正しく機能していないことがわかりますzsh: invalid module name `zsh/zle'
(a抜け穴)。
ほとんどのシェルはまた、行zsh
編集モードをユーザーのエディター設定に一致させようとし、環境変数の値に基づいてデフォルト編集モードを選択します。$EDITOR
$VISUAL