如何在 Konsole 中转发 `<Ctrl>-<Tab>`?
Posted
技术标签:
【中文标题】如何在 Konsole 中转发 `<Ctrl>-<Tab>`?【英文标题】:How do I forward `<Ctrl>-<Tab>` in Konsole? 【发布时间】:2011-02-08 12:34:18 【问题描述】:我想在 Emacs 中以 C++ 模式使用智能制表符,但我也希望能够在必要时插入制表符。从其他帖子中,我了解到最简单的方法是将<Ctrl>-<Tab>
绑定到缩进。但是,KUbuntu 中的 Konsole 似乎不会转发 <Ctrl>
?
我当前的 .emacs 文件包含:
(defun my-c-mode-common-hook ()
(setq c++-tab-always-indent t)
(setq tab-width 4)
(setq indent-tabs-mode t)
)
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
(global-set-key [C-tab] 'self-insert-command)
所以我相信这会将<Ctrl>-<Tab>
绑定到插入制表符。但是,当我运行时:
<Ctrl>-h k <Ctrl>-<Tab>
Emacs 只报告我按下了 tab 键。是否有一些 Konsole 选项(我已经搜索但无济于事)或 KUbuntu 中的全局首选项,我需要设置以便 <Ctrl>-
也被转发? (它肯定会转发所有其他 <Ctrl>-blah
命令。)
【问题讨论】:
好吧,似乎 konsole 本身将 ctrl-tab 视为选项卡(至少在我的盒子上)。 ctrl-tab tab 的完成与 tab 在命令行键入时的完全一样。看起来 konsole 无法将 ctrl-tab 识别为与 tab 不同。 我测试了 Konsole、Gnome 终端和 xterm。只有在 xterm 中运行的 emacs 才能区分 TAB 和 C-TAB 那么看起来 C-TAB 只是一个愚蠢的想法。我应该绑定哪个组合键?或者这种添加 Tab 字符的能力[不禁用智能 Tab] 是否已经存在,而我根本不知道正确的组合键? 【参考方案1】:您可以使用 Control-Q(引号,是我为了记住这一点而想到的),然后按 Tab 键,您将插入一个制表符。您可以使用 Control-Q 插入您需要的任何字符序列。希望这可以帮助。 :)
【讨论】:
【参考方案2】:我必须解决同样的问题,我在这里找到了答案: http://www.linux-archive.org/ubuntu-user/189410-equivalent-xterm-vt100-translations-string-gnome-terminal.html
我所做的是以下内容。
-
准备我自己的 konsole 键绑定自定义文件
~/.kde/share/apps/konsole/linux-custom.keytab
通过指定我自定义的 keytab 运行 konsole
% konsole --keytab linux-custom
在 Emacs 中绑定键
我在 linux-custom.keytab 中的绑定是
key Tab +Control : "\E[4t" # control tab will generate esc [ 4 t
key Backtab : "\E[4s" # shift tab will generate esc [ 4 s
(我不知道任何分配密钥代码的规则,所以我选择了一些尚未使用的代码。)
在从 .emacs 调用的 Emacs 自定义文件中,我放置了以下绑定
(define-prefix-command 'terminal-key-map)
(global-set-key (kbd "\e[") 'terminal-key-map)
(define-key terminal-key-map (kbd "4t") 'other-window) ;control tab
(define-key terminal-key-map (kbd "4s") 'other-window) ;shift tab
我还用同样的方法自定义了control ;
、control '
、control =
等其他键。
【讨论】:
以上是关于如何在 Konsole 中转发 `<Ctrl>-<Tab>`?的主要内容,如果未能解决你的问题,请参考以下文章