Ctrl-Left、Ctrl-Rightを認識するようにlessを設定する方法

Ctrl-Left、Ctrl-Rightを認識するようにlessを設定する方法

マンページには、less行編集(検索文字列の入力など)を実行するとき、およびを使用してCtrlLeftカーソルをCtrlRight1つの単語に移動できることが示されています。

^LEFTARROW [ ESC-b or ESC-LEFTARROW ]
     (That is, CONTROL and LEFTARROW simultaneously.)  Move the
     cursor one word to the left.

これを試みると、端末から送信された制御シーケンスの印刷表現が入力されます。とCtrlLeft入力しESC[1;5D、Ctrl - 右を押してを入力しますESC[1;5C

私のターミナルはそれぞれと^[[1;5Dを送る^[[1;5Cように設定されており、それをターミナルに入れてシェルに入ると、Readlineはベットジャンプを行います。CtrlLeftCtrlRight~/.inputrc

# Ctrl-Left
"\033[1;5D": backward-word
# Ctrl-Right
"\033[1;5C": forward-word

おそらくless他の制御シーケンスを期待していますか? VimやReadlineに問題が発生するかどうか、ターミナルから送信されたエスケープシーケンスを変更するのは少し躊躇しますが、less試してみたいです。

答え1

シーケンスが「単語の右側」で\e[1;5D実行されるようにキーバインディングをlessに設定します。word-left\e[1;5C

ファイルに~/.lesskey以下を追加します。

#line-edit
\e[1;5D    word-left
\e[1;5C    word-right

#line-editセクションがすでに存在する場合は、必要な行を追加します。

その後実行lesskey。コンパニオンプログラムは、(人間が読める構文で)使用されたバイナリ形式に変換します~/.lesskey~/.lessless

関連情報