我正在使用terminfo
来查找他们控制序列对我终端中的Left(Right,...)键的影响,以便我可以将其映射到有用的东西(向左移动)我的zshrc
是这样的:
typeset -A key
left=${terminfo[kcub1]}
bindkey "$left" backward-char
(还有其他一些工作要做,请参阅source)。
这很有用,因为我使用了几个终端仿真器并且这些控制序列发生了变化。例如我在Ubuntu上使用Gnome Terminal到ssh
到Debian框,然后在里面使用tmux
...
但是如何从terminfo中找出CTRL + LEFT (和RIGHT ...)的关键代码?我想将它们映射到左/右单词。
答案 0 :(得分:0)
control 左箭头等不是标准的terminfo功能。 ncurses将这些作为扩展提供(请参阅terminal database中的讨论),知道如何使用扩展的应用程序可以获取它们。
zsh的源代码暗示它将使用terminfo库的表,例如strnames
(如果可用),但是ncurses在单独的内存区域中实现扩展名。 (terminfo数据可以追溯到2005年左右;扩展本身可以追溯到1999年的ncurses 5.0)。
但是,由于zsh不使用扩展信息来查找名称,因此实施(截至2018年)不完整。 ZSH for loop array variable issue中给出的示例,例如,
for key val in ${(kv)terminfo}; do
echo "$key -> $val"
done
仅提供预定义的名称。
zsh使用tigetstr
来检索字符串功能。如果您碰巧知道该名称(或在infocmp
的 - x
列表中查看),您可以将其用作 {{1}的索引} 数组。
扩展名基于xterm的修饰符代码,该代码列在终端数据库中xterm+pcfkeys
条目上方的注释中:
terminfo[]
"kLFT5"