gpt4 book ai didi

Ubuntu 终端 : How to remap keybindings from default terminal

转载 作者:太空宇宙 更新时间:2023-11-03 16:57:12 26 4
gpt4 key购买 nike

运行后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 , 但检测为 TABemacs -nw .

  • ctrl + /被检测为 C-/emacs , 但检测为 C-_emacs -nw .

  • ctrl + `被检测为 C-`emacs , 但检测为 C-@emacs -nw .

  • ctrl + shift + backspace被检测为 <C-S-backspace>emacs , 但检测为 DELemacs -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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com