- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
运行后cat -t
,我测试了以下情况:
ctrl
+ tab
只加了一个tab
空间
ctrl
+ /
添加 ^_
ctrl
+ `
添加 ^@
ctrl
+ shift
+ backspace
向左删除(与 backspace
行为相同)。
另一方面,以下键绑定(bind)保持一致:
ctrl
+ n
添加 ^N
ctrl
+ y
添加 ^Y
所有字母数字字符 [a-zA-Z0-9]
添加相应的字母数字字符
有没有办法将组合键重新映射到首选输出?例如,在我上面的前四个示例中,我想将它们重新映射为以下内容:
ctrl
+ tab
至 <C-tab>
(而不是 TAB
)
ctrl
+ /
至 ^/
(而不是 ^_
)
ctrl
+ `
至 ^`
(而不是 ^@
)
ctrl
+ shift
+ backspace
至 <C-S-backspace>
(而不是 DEL
)
背景(TLDR)
我想运行 emacs -nw
在远程机器上编辑时,但我注意到在运行 emacs
之间检测到的几个组合键并不一致和 emacs -nw
.以下是一些不一致的键映射,我已经使用 C-h k <key-binding>
进行了验证。在 Emacs 中:
ctrl
+ tab
被检测为 <C-tab>
在 emacs
, 但检测为 TAB
在 emacs -nw
.
ctrl
+ /
被检测为 C-/
在 emacs
, 但检测为 C-_
在 emacs -nw
.
ctrl
+ `
被检测为 C-`
在 emacs
, 但检测为 C-@
在 emacs -nw
.
ctrl
+ shift
+ backspace
被检测为 <C-S-backspace>
在 emacs
, 但检测为 DEL
在 emacs -nw
.
关于如何将正确的组合键发送到我的无窗口 emacs 的任何想法?所有不一致检测到的组合键都涉及使用 ctrl
,但并非所有与控件的键绑定(bind)都被不一致地检测到。例如,C-n
始终被检测到。
我使用的是 Ubuntu 14.04,但这个问题在 Debian Wheezy 中也存在。对于终端信息,我在所有服务器和本地计算机上都有以下信息:
[lucas@server]/home/lucas/bin$ echo $TERM
screen
[lucas@server]/home/lucas/bin$ echo $SHELL
/bin/bash
我通常在 tmux
中运行我的 session , 但无论我是否在 tmux session 中,这个问题仍然存在。
最佳答案
我怀疑您遇到的问题不止一个层面。这意味着您需要在不同的点/级别调整配置。
设置新机器时,我需要做的第一件事就是遍历并删除或更改所有地方的键绑定(bind)。主要原因是因为我大量使用 emacs,而现在,很多东西在交付给 emacs 之前“窃取”了它们的击键。
请注意,我很少在终端中运行 emacs。我几乎只在自己的窗口中运行 emacs,并将我的环境变量(如 EDITOR 等)设置为 emacsclient。这意味着我可以比打开终端和运行 emacs 更快地打开 emacs 框架。目前,我正在运行 Ubuntu Gnome,但我正在认真考虑切换回 Sawfish 或 Stumpwm。
如果您要在 gnome 下的终端中运行 emacs,您需要查看三个与键绑定(bind)相关的“层”。
第 1 层: session (gnome) 层。许多“标准”emacs 键绑定(bind)可以被 wm 窃取。我通常进入键盘设置选项并禁用与我想在 emacs 中使用的绑定(bind)冲突的快捷方式,或者将它们重新绑定(bind)到另一个键。
第 2 层:终端仿真器。这可能会有所不同,具体取决于您使用的终端。通常,由于终端仿真器转换按键事件并将其发送到应用程序的方式,在此级别上的事情会受到更多限制。终端还可以窃取一些关键事件。还有一个问题是,一些终端仿真器将比其他终端仿真器更符合传统的“控制台”界面,在这种情况下,一些在 xsession 层可能的组合键在终端层是不可能的。对于 gnome 终端,您需要查看“edit->keyborad shortcuts”下的设置和“edit->profile preferences”下的兼容性部分。
第 3 层:在某些情况下,您可能需要调整 emacs 中的 key 转换表,以便它理解终端发送的 key 转换。
您想在终端内而不是作为本地 X11 客户端运行 emacs 有什么特别的原因吗?有时这样做是有原因的(例如使用 tmux 与远程同事协作)。但是,如果没有足够的理由在终端下运行,我强烈建议在 GUI 模式下运行。这将消除至少 1 层。我还发现,与在终端下运行时相比,在本地运行时面部设置似乎更加一致,并且您可以避免在终端中使用 emacs 和运行外部接口(interface)功能(例如 ssh、tramp 等)时可能遇到的一些问题。
关于Ubuntu 终端 : How to remap keybindings from default terminal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24135968/
我是一名优秀的程序员,十分优秀!