Emacs org-mode中的Python代码块有5个空格缩进,但我想要4个空格缩进。

5
我将Python代码编写在org-mode文件中的源代码块内;我使用Emacs命令 C-c ' 在Python模式下,通过子缓冲区编辑代码块。
示例:
#+begin_src python
def function(x):
     hitting_tab_inserts_5_spaces=x*2
     if x<0:
          hitting_tab_inserts_5_spaces=-x
     return x

我在任何地方都得到了5个空格的制表符,而不是我想要的4个空格的制表符。

注意:我正在使用viper(vim仿真)。

在哪里可以配置影响org模式文件中代码块内缩进的参数?

如果我使用emacs编辑.py文件,我确实得到了4个空格的制表符;这种5个空格的制表符只会在org模式中出现。


1
如果您将类似以下的内容添加到您的 .emacs 文件中,并使用 org-mode-hook,这会有所帮助吗?:(add-hook 'org-mode-hook (lambda () (setq indent-tabs-mode t) (setq tab-stop-list (number-sequence 4 200 4)) (setq tab-width 4) (setq indent-line-function 'insert-tab))) - lawlist
@lawlist:这似乎有效。 - Dave
@lawlist:为什么不把你的评论复制到回复中,这样Dave就可以选择它作为这个问题的答案了? - Jeff Bauer
1个回答

4
(defun my-tab-related-stuff ()
   (setq indent-tabs-mode t)
   (setq tab-stop-list (number-sequence 4 200 4))
   (setq tab-width 4)
   (setq indent-line-function 'insert-tab))

(add-hook 'org-mode-hook 'my-tab-related-stuff)

为什么选择制表位列表 4 200 4? - Jonathan Rayner
@JonathanRayner -- 这个帖子的原始发布者指定了他/她想要一个4的间距宽度,所以我使用了4。我使用200是因为我认为大多数用户不需要超过这么多制表符停止位的需求。 - lawlist
抱歉 - 那是我的错误,我匆忙地浏览了数字序列并发表了过快的评论。有道理,谢谢您的快速回复。 - Jonathan Rayner
@lawlist 当我开始写入 #+begin_src ...#+end_src 块时,第一行总是以制表符开头。是否可能在没有缩进的情况下开始内部块?并且我们可以应用4个空格而不是制表符吗? - alper
@alper -- 由于这个答案是写于6.5年前的,而且现在大多数与Emacs相关的内容都在emacs.stackexchange.com上处理,我建议你在那里撰写一个新问题。你的一部分询问似乎与你今天早些时候标记为“重复”的问题相同。因此,在你撰写新问题时,请确保包含足够的信息,例如为什么它与缩进/左对齐不同,以证明它不是重复的。 - lawlist
@lawlist 请参见:https://emacs.stackexchange.com/questions/68129/org-mode-how-to-apply-4-spaces-for-tab-without-initial-indent-inside-source-code。另外,非常抱歉一直不停地问问题。 - alper

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