私はこれを.inputrc
に持っています:
"\e[A": history-search-backward
"\e[B": history-search-forward
set show-all-if-ambiguous on
set completion-ignore-case on
# mappings for Ctrl-left-arrow and Ctrl-right-arrow for Word moving
"\eOc": forward-Word
"\eOd": backward-Word
"\e[1;5C": forward-Word
"\e[1;5D": backward-Word
"\e[5C": forward-Word
"\e[5D": backward-Word
"\e\e[C": forward-Word
"\e\e[D": backward-Word
また、bindkey
命令が定義されている.zprezto/modules/editor/init.zsh
には何も触れていません。
しかし、私が押すと CtrlLeft または CtrlRight ターミナル(URxvt)が点滅し、何も起こりません。一方、XTermでは機能します。 URxvtの問題のようです。
示されているキーバインディングは、xterm(およびxtermの動作をコピーするプログラム)用です。 urxvt
はrxvt
の子孫であり、differentキーバインディングを使用します。デフォルトでは、 controlleft rxvt/urxvt送信の場合 escapeOd。あなたは実行することによってこれを見ることができます
cat -v
そのキーの組み合わせを入力します。 ^[Od
としてエコーします。同じ問題が他のカーソルキーにも当てはまります。
urxvt
は、リソース設定keysym.sym
(rxvt
で導入された機能の拡張)を提供します。これは、可能これらの端末から送信されるキーを変更して、xterm
により厳密に一致させるために使用します。これは、次のようなリソース設定になります。
URxvt.keysym.Control-0xff51: \033[1;5D
ここで(マニュアルページに示されているように)、Control
は修飾子であり、0xff51
はxev
を使用して取得できるカーソル左キーのコードです。
すべてのキーを取得するには、各キー(および修飾子)のリソースを追加する必要があります。
参考文献:
~/.inputrc
ファイルはbashのものであり、私が知る限りzsh
のものではありません。 readline
の動作を制御し、zsh
に相当するものは zle
です。 bindkey
コマンドを使用して、その動作を変更できます。
だから、取得するには CtrlLeft そして Right 戻って、これらの行を~/.zshrc
に追加します(~/.inputrc
と同等の、より良い場所があるかもしれませんが、私にはわかりませんが、~/.zshrc
は機能します):
bindkey "\eOc" forward-Word
bindkey "\eOd" backward-Word
bindkey "\e[1;5C" forward-Word
bindkey "\e[1;5D" backward-Word
bindkey "\e[5C" forward-Word
bindkey "\e[5D" backward-Word
bindkey "\e\e[C" forward-Word
bindkey "\e\e[D" backward-Word