我正在使用带有 KDE 的 Fedora 30,并且为了方便起见,我正在尝试将 (Zsh) 绑定autosuggest-execute
到Ctrl+ Enter。我正试图让它在gnome-terminal
.
但是我发现在这三种情况下showkey -a
总是返回: 、+和+ 。^M
EnterCtrlEnterShiftEnter
我尝试了这个方法(Ctrl <Return> : "\033M"
in .XCompose
),但它根本不起作用,因为 XCompose 文件没有被读取。所以我决定安装ibus
它,因为我的 KDE 安装没有附带dnf groupinstall input-methods
.
跑步ìbus-setup
现在给我这个警告:
GTK+ supports to output one char only: "\033M": ! Ctrl <Return> : "\033M"
不幸的是,所有输入组合仍然归结为^M
ingnome-terminal
和xterm
。
有没有办法区分那些有或没有 ibus 的组合键?
无需安装 ibus 等。所有 X11 应用程序都可以访问确切的键码及其xkb / xim 翻译,并且可以忽略后者。
问题出在终端模拟器中,事实上没有标准的方法来表示终端中的 Ctrl-Enter 之类的组合键。此外,每个终端模拟器都有(或没有)自己配置键绑定的方式。
在
xterm
中,就像在任何基于 xt 的应用程序中一样,您可以使用 X11 资源轻松配置它。例如,这会将 Ctrl-Enter 转换为与F33
功能键对应的转义符(根据infocmp
):然后你可以将它绑定
\e[20;5~
到你想要在 readline's~/.inputrc
, withbind
inbash
, withbindkey
inzsh
等中的任何动作。X11 资源存储为
RESOURCE_MANAGER
根窗口的属性,并且可以使用xrdb
实用程序在那里加载;通常,xrdb
将从 x11 会话初始化脚本调用以加载~/.Xresources
文件的内容。KDE 或 Gnome 应用程序喜欢
konsole
并gnome-terminal
有自己的方式将组合键配置为操作;我不知道这是否包括向伪 tty 主机写入任意字符串的能力。这是如何设置它
konsole
:另请参阅Konsole 中键绑定的 Kde 参考。
设置 -> 编辑当前配置文件 -> 键盘 ->(选择使用的键盘布局) -> 编辑 -> 搜索/过滤
Return
.编辑以下条目(仅限左列):
Return-Shift-NewLine
为Return-Shift-Ctrl-NewLine
Return-Shift+NewLine
为Return-Shift-Ctrl+NewLine
这允许区分
Enter
和Ctrl
+Enter
。添加以下条目:
Return+Ctrl
->\E[20;5~
现在只需添加
bindkey '\e[20;5~' autosuggest-execute
或任何其他接收器~/.zshrc
。