如何绑定CTRL在zsh中输入?
我想在zsh中绑定CtrlEnter?:
bindkey '^M' autosuggest-execute 但似乎终端为除Alt之外的任何修改键发送相同的转义序列. $showkey -a Press any keys - Ctrl-D will terminate this program ^M 13 0015 0x0d # Enter ^M 13 0015 0x0d # CTRL + Enter ^M 13 0015 0x0d # SHIFT + Enter ^[^M 27 0033 0x1b # ALT + Enter 13 0015 0x0d 我不确定问题是否特定于gnome-terminal.我也在mate-terminal和xterm中对此进行了测试,结果是一样的.有没有办法检测CTRL Enter? 解决方法
这是xterm,gnome-terminal和XWindow系统的任何其他终端仿真器的解决方案.
请注意,将Ctrl Enter映射到特定的shell命令可以使用xterm专门完成,其方式不会影响在同一X Server上运行的其他终端仿真程序.使用gnome-terminal,有一个更通用的解决方案,但它将同时应用于XWindow服务器上的每个终端仿真器,而不仅仅是gnome-terminal.因此,根据您的需求,您必须选择这两种解决方案中的一种. 首先,这里是特别适合xterm的解决方案: 让我们将Ctrl Enter绑定到尚未受其他组合约束的序列:使用xterm,可以通过指定一些X资源来填充翻译表来完成.例如,绑定到Esc M.然后,在zsh中使用bindkey将此特定序列绑定到您的ZLE函数(根据您的问题自动提示执行). 要尝试,请按照以下步骤操作: 1-以这种方式启动xterm: % xterm -xrm '*.VT100.translations: #override Ctrl <Key>Return: string(0x1b) string("M")' 注意:我们使用了Return,但这是Enter,我们将以这种方式映射. 2-在新的xterm窗口中,使用bindkey: % bindkey '^[M' autosuggest-execute 3-现在键入CTRL-Enter以运行autosuggest-execute 对于几乎所有终端仿真器,这是更通用的解决方案: 如上所述,让我们将Ctrl Enter绑定到尚未受其他组合约束的序列(我们在这里选择Esc M).使用Compose(5)X11机制:添加一个文件$HOME / .XCompose,其中包含多键输入序列Ctrl M的特定映射.然后,使用zsh中的bindkey将此特定序列绑定到ZLE函数(autosuggest-execute)根据你的问题). 要尝试,请按照以下步骤操作: 1-创建一个名为$HOME / .XCompose的新文件 在此文件中添加以下内容: include "%L" ! Ctrl <Return> : " 33M" 注1:我们使用了Return,我们将以这种方式进行映射. 注2:!不是注释标记,重要的是将它保持在此行的开头. 注3:第一行(包括…)用于保持其他快捷方式正常工作(例如^ e映射到ê). 2-现在,你可以启动gnome-terminal 3-在新的gnome-terminal窗口中,使用bindkey: % bindkey '^[M' autosuggest-execute 4-现在键入CTRL-Enter以运行autosuggest-execute (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |