Emacs标签页无法工作

30

我在我的FreeBSD 8.2机器上安装了Emacs。一切正常,但是我无法使用制表符。当我使用emacs编辑文件并按tab键时,没有任何反应。

可能是什么原因导致这种情况?


C-h k TAB 告诉你什么? - Bahbar
1
Ctrl-h 是获取帮助的键组合。然后您可以输入 k 以请求键盘快捷方式。按下 TAB 键会询问 Emacs“TAB 绑定到什么”。但是不要紧。如果您是 Emacs 的新手,那么您可能看到的是自动缩进。在已经缩进的行上按下 TAB 确实不会有任何作用。 - Bahbar
4
@RichardKnop: <kbd> Ctrl-h </kbd> 是 Emacs 的 help 键。 <kbd> Ctrl-h k </kbd> 用于检查特定键连接的命令。因此,<kbd> Ctrl-h k TAB </kbd> 告诉你按下 TAB 键时运行的命令。通常这是一个根据所在主要模式缩进一行的命令。如果你想插入一个文字TAB字符,请按 <kbd> Ctrl-q TAB </kbd>。 - Lindydancer
这将有助于解决您使用 C-h 键产生的退格键问题:http://www.gnu.org/software/emacs/manual/html_mono/efaq.html#Backspace-invokes-help。此常见问题解答还可以帮助解决其他问题。 - Drew
我曾经遇到过这个问题。我只需要关闭文件,然后重新打开它,就能够恢复使用 Tab 键了。 - Clint
显示剩余7条评论
2个回答

42
如果你是Emacs的新手,你可能期望按下键会插入一个字面上的\T。由于各种原因,大多数Emacs模式并不是这样工作的。大多数编辑模式根据需要自动缩进代码(绑定到indent-for-tab-command而不是self-insert)。如果你正在上的行已经处于正确的缩进级别,那么似乎什么也没有发生。
像这样自动缩进比手动缩进更容易和更一致,但在决定每行开头将有多少空格方面不如手动缩进灵活(当你想要例如制表符分隔某些字段时,它也会导致一些问题)。你可以使用C-M-\(这是Ctrl + Alt + \)自动缩进一个区域。
如果你绝对、肯定必须在你的代码中插入一个字面上的\T,你可以使用C-q TAB(按下并释放Ctrl + q,然后按下TAB)来实现。通常,这是为了在其他编辑器中对齐列而完成的;如果你正在这样做,最好使用align-regexp而不是制表符字面值。

2
你如何在Emacs中关闭自动缩进? - user590849
1
@user590849 - 你可能不应该这样做;虽然需要一点时间来适应,但之后会更容易。如果你在某种模式下使用的自动缩进出了问题,你可以将 <tab> 重新绑定到 (insert "\t") - Inaimathi
1
嗯,对我来说,Emacs并不聪明,无法自动缩进所有代码。实际上,大多数情况下它都不能按照你的期望工作。例如,当你在一个文件中编写HTML/CSS/JavaScript时,如果只是在Emacs上按<tab>键,它并不能很好地缩进你的HTML/CSS/JavaScript代码。我必须手动按下许多空格来缩进我的代码。 - 1234

0
在基本和文本模式下,我使用 C-<TAB>。我不知道这适用于哪些其他模式,但除了少数例外,纯文本是我需要实际的 \t 字符的唯一时间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接