我想在 Emacs 中做一件非常简单的事情。我想设置它,以便当我按 TAB 键时,它插入两个空格。只是这个。这就是我所要求的。我已经尝试这样做好几年了,但就是没有办法做到。在每种文件类型中,它都会以不同的方式爆炸。 HTML 文件?随机选择获取四个空格或按 Tab 键到上一行缩进。 Python 文件?只要四个空格,我就会忽略您的任何设置。它似乎也会根据之前工作时的月相随机停止工作。
在我的 .emacs 中:
(setq indent-tabs-mode nil)
(setq tab-width 2)
这应该有效,对吧?不,不,没有。看起来 emacs 对于每个扩展都有一个神奇的仙女“文件模式”,它完全覆盖了我告诉它的内容。那么我是否必须找到这个神奇的仙女配置并为每种文件类型覆盖它?我该怎么做才能让这个简单的事情发挥作用。哈尔普。
答案1
Tab每种语言都有自己的缩进约定,因此始终通过易于访问的键获得相同的效果并不是很有用。这就是为什么很多主要模式1 覆盖按键的绑定。
要覆盖特定模式的设置,请将其绑定到其键盘映射中。
(defun insert-two-spaces (&optional count)
(interactive "*p")
(insert (make-string (* 2 count) ?\ )))
(add-hook 'python-mode-hook '(local-set-key "\t" 'insert-two-spaces))
要覆盖所有位置的设置,您可以定义一个始终开启的小模式。请参阅埃利普手册了解如何定义次要模式。
(define-minor-mode magnus-minor-mode
"Override the binding of the TAB key."
:keymap '(([?\t] . insert-two-spaces))
:global t)
(magnus-minor-mode 1)
1你所说的“魔仙文件模式”是一个主要模式。如果您不喜欢自动执行操作的编辑器,我建议纳米。