如何使Tab在Emacs中插入一定数量的空格

时间:2017-01-12 22:43:21

标签: python emacs tabs

我想不在emacs中使用标签,我想设置它以便按Tab键根据文件类型插入一定数量的空格。例如,我想在处理python文件时按Tab键插入4个空格。这是我当前的.emacs文件

(setq-default indent-tabs-mode nil)
(setq tab-width 4)
(setq tab-stop-list (number-sequence 4 200 4))

目前,每当我按Tab键时,它只会添加任何空格,如果它是emacs认为合适的位置。例如,如果我打开一个python文件并按下tab,则不会发生任何事情。但是,如果我输入“if:”然后点击下一行的tab,它将添加4个空格。但是,如果我再次按Tab键,它会将我带回到行的开头。我想我只想做它,以便它添加一定数量的空格,简单明了(除非有人能给我一个很好的理由说明为什么让标签循环到线是有用的。)

我想要这个的主要原因是因为我正在开发一个项目,其中注释遵循特定格式,涉及使用基于4个空格的集合的缩进。 例如:

    r"""
    Return the value of the q-gamma function. 

    .. MATH::

        qgamma(z,q) = \Gamma_q (z).
    """

因此,对于带有“qgamma”的行,我必须以8个空格开始,我希望能够通过按Tab键两次来实现。但是,emacs并不认为这是一个能够选项卡两次的合适位置,因此每当我按Tab键两次时,它就会将我带回到行的开头。

谢谢!

编辑:检查主模式变量是否在python-mode上。

2 个答案:

答案 0 :(得分:0)

M-x customize,搜索py-tab-indent,将其关闭并Apply。我相信你正在寻找的行为。测试一下,如果是,Apply and Save自定义。

注意,正如@jpkotta指出的那样,上述内容适用于python-mode.el,而非内置python.el

答案 1 :(得分:0)

如果您使用的是内置python.el,则可以indent-line-functionindent-relative设置为python-indent-line-function而不是python-mode-hook中的(defun jpk/python-mode-hook () (setq indent-line-function #'indent-relative)) (add-hook 'python-mode-hook #'jpk/python-mode-hook)

indent-line-function

每个主要模式都有自己的缩进函数,由indent-relative变量指向。 fundamental-mode是一个非常基本的通用缩进函数,用于python.el(最基本的主要模式)。

Python在Emacs中有点奇怪,它有两种广泛使用的主要模式,内置python-mode.el和第三方PROMPT。使用您想要的任何一个,但要注意您正在使用哪些以及哪些人在文章和SO答案中提及。