Ubuntu终端:如何从默认终端重新映射密钥绑定
运行Ubuntu终端:如何从默认终端重新映射密钥绑定,ubuntu,emacs,terminal,Ubuntu,Emacs,Terminal,运行cat-t后,我测试了以下情况: ctrl+tab只添加了一个选项卡空间 ctrl+/添加了^ ctrl+`添加了^@ ctrl+shift+backspace向左删除(行为与backspace相同) 另一方面,以下键绑定保持一致: ctrl+n添加^n ctrl+y添加^y 所有字母数字字符[a-zA-Z0-9]添加相应的字母数字字符 有没有办法将组合键重新映射到首选输出?例如,在上面的前四个示例中,我想将它们重新映射到以下内容: ctrl+tab到(而不是tab) ctrl+/
cat-t
后,我测试了以下情况:
+ctrl
只添加了一个tab
空间选项卡
+ctrl
添加了/
^
+ctrl
添加了`
^@
+ctrl
+shift
向左删除(行为与backspace
相同)backspace
+ctrl
添加n
^n
+ctrl
添加y
^y
- 所有字母数字字符
添加相应的字母数字字符[a-zA-Z0-9]
+ctrl
到tab
(而不是
)tab
+ctrl
到/
(而不是^/
)^
+ctrl
到`
(而不是^`
)^@
+ctrl
+shift
到backspace
(而不是
)DEL
emacs-nw
,但我注意到,在运行emacs
和emacs-nw
之间,并没有不一致地检测到几个组合键。下面是一些不一致的密钥映射,我已经在Emacs中使用C-hk
验证了它们:
+ctrl
在tab
中检测为emacs
,但在
中检测为emacs-nw
tab
+ctrl
在/
中检测为emacs
,但在C-/
中检测为emacs-nw
C-
+ctrl
在`
中检测为emacs
,但在C-`
中检测为emacs-nw
C-
+ctrl
+shift
在backspace
中检测为emacs
,但在
中检测为emacs-nw
DEL
ctrl
,但并非所有具有控件的键绑定都检测到不一致。例如,C-n
始终被检测到
我使用的是Ubuntu14.04,但Debian Wheezy也存在这个问题。对于终端信息,我在所有服务器和本地计算机上都有以下信息:
[lucas@server]/home/lucas/bin$ echo $TERM
screen
[lucas@server]/home/lucas/bin$ echo $SHELL
/bin/bash
我通常在
tmux
中运行会话,但无论我是否在tmux会话中,此问题都会持续存在。我怀疑您遇到的问题不止一个级别。这意味着您需要在不同的点/级别调整配置
设置新机器时,我需要做的第一件事就是检查并删除或更改所有的密钥绑定。主要原因是我广泛使用emacs,而现在,很多东西在交付给emacs之前就“窃取”了它们的按键
请注意,我很少在终端中运行emacs。我几乎只在自己的窗口中运行emacs,并将环境变量(如编辑器等)设置为EmacClient。这意味着我可以比打开终端并运行emacs更快地打开emacs框架。目前,我正在运行UbuntuGNOME,但我正在认真考虑切换回Sawfish或Stumpwm
如果您打算在gnome下的终端中运行emacs,那么您需要查看关于键绑定的三个“层”
第1层:会话(gnome)层。许多“标准”emacs密钥绑定可能被wm窃取。我通常进入键盘设置选项,或者禁用与我想在emacs中使用的绑定冲突的快捷键,或者将它们重新绑定到另一个键
第2层:终端仿真器。这可能会因您使用的终端而异。一般来说,由于终端仿真器转换按键事件并将其发送到应用程序的方式,这一级别的限制稍微多一些。终端还可以窃取一些关键事件。还有一个问题是,一些终端仿真器比其他终端仿真器更符合传统的“控制台”接口,在这种情况下,在xsession层可能出现的一些键组合在终端层是不可能的。对于gnome终端,您需要查看“编辑->键盘快捷方式”下的设置和“编辑->配置文件首选项”下的兼容性部分
第3层:在某些情况下,您可能需要调整emacs中的密钥转换表,以便它理解终端发送的密钥转换
您希望在终端内而不是作为本机X11客户端运行emacs,有什么特殊原因吗?有时有这样做的理由(例如使用tmux与远程同事协作)。但是,如果没有在终端下运行的强大案例,我强烈建议在GUI模式下运行。这将至少消除一层。我还发现,与在终端下运行相比,在运行本机时,面部设置似乎更加一致,并且可以避免在终端中使用emacs和运行外部接口功能(如ssh、tramp等)时可能遇到的一些问题。您使用的终端是什么?Emacs可以处理它接收到的任何东西,但是大多数终端仿真器在它们的功能上受到了严格的限制