如何配置 less 来识别 Ctrl-Left、Ctrl-Right

如何配置 less 来识别 Ctrl-Left、Ctrl-Right

联机less帮助页显示,在执行行编辑(例如输入搜索字符串)时,您可以使用CtrlLeftCtrlRight将光标移动一个单词:

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

当我尝试这样做时,它会输入我的终端发送的控制序列的打印表示。CtrlLeftEnterESC[1;5D并按 Ctrl-Right 键输入ESC[1;5C

我的终端配置为分别发送^[[1;5D^[[1;5CforCtrlLeftCtrlRight,我将其放入我的终端中,这样~/.inputrc当我在 shell (Bash) 中时,Readline 会执行逐字跳转,

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

大概less是期待一些不同的控制序列?我有点犹豫是否要更改终端发送的转义序列以满足less,因为担心它会绊倒 Vim 或 Readline,但我愿意尝试一下。

答案1

配置 less 的键绑定,以便序列\e[1;5D运行word-left\e[1;5C运行“word-right”。

在文件中~/.lesskey,添加

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

如果已有#line-edit部分,请添加必要的行。

然后运行lesskey。该配套程序(以人类可读的语法)转换为使用的~/.lesskey二进制格式。~/.lessless

相关内容