4

我想在 C++ 模式下在 Emacs 中使用智能制表符,但我也希望能够在必要时插入制表符。从其他帖子中,我了解到最简单的方法是绑定<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命令。)

4

2 回答 2

3

您可以使用 Control-Q(引号,是我为了记住这一点而想到的),然后按 Tab 键,您将插入一个制表符。您可以使用 Control-Q 插入您需要的任何字符序列。希望这可以帮助。:)

于 2010-04-17T06:34:24.663 回答
2

我必须解决同样的问题,我在这里找到了答案: http ://www.linux-archive.org/ubuntu-user/189410-equivalent-xterm-vt100-translations-string-gnome-terminal.html

我所做的是以下内容。

  1. 准备我自己的 konsole 键绑定自定义文件 ~/.kde/share/apps/konsole/linux-custom.keytab
  2. 通过指定我自定义的 keytab 来运行 konsole

    % konsole --keytab linux-自定​​义

  3. 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 =等。

于 2010-11-19T21:48:04.820 回答