我正在将 Fedora 30 与 KDE 结合使用,并尝试将 (Zsh) 绑定autosuggest-execute
到Ctrl+Enter以方便使用。我正在努力让它在gnome-terminal
.
然而我发现在这三种情况下showkey -a
总是返回: 、+和+ 。^M
EnterCtrlEnterShiftEnter
我试过这个方法(Ctrl <Return> : "\033M"
在.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 的这些组合键?
答案1
无需安装 ibus 等。所有 X11 应用程序都可以访问确切的密钥代码和到他们的 xkb / xim 翻译,并且可能忽略后者。
问题出在终端模拟器中,而且事实上没有标准的方法来表示终端中的组合键,例如 Ctrl-Enter。此外,每个终端模拟器都有(或没有)自己的配置键绑定的方式。
在 中xterm
,就像在任何基于 xt 的应用程序中一样,您可以使用 X11 资源轻松配置它。例如,这会将 Ctrl-Enter 转换为与F33
功能键对应的转义符(根据infocmp
):
xterm -xrm '*VT100*translations: #override Ctrl<Key>Return:string("\033[20;5~")'
然后你可以将其绑定\e[20;5~
到 readline ~/.inputrc
、 with bind
in bash
、 with bindkey
inzsh
等中你想要的任何操作。
X11 资源作为根窗口的属性存储RESOURCE_MANAGER
,并且可以使用xrdb
实用程序加载到根窗口;通常,xrdb
将从 x11 会话初始化脚本中调用以加载~/.Xresources
文件的内容。
KDE 或 Gnome 应用程序喜欢konsole
并gnome-terminal
有自己的方式来配置组合键的操作;我不知道这是否包括向伪 tty master 写入任意字符串的能力。
答案2
这是如何设置它的konsole
:
设置 -> 编辑当前配置文件 -> 键盘 -> (选择使用的键盘布局) -> 编辑 -> 搜索/过滤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
。