当我使用Emacs时,我关闭任何自动缩进并使用自定义缩进方案(保留前一行的缩进,仅使用空格)。
在c模式下,我只使用C-c C-l
关闭电模式。
但是在perl模式下,我不确定如何实现相同的。
看http://mirror.fraunhofer.de/CPAN/misc/emacs/perl-mode.el。我可以看到
(defvar perl-mode-map ()
"Keymap used in Perl mode.")
(if perl-mode-map
()
(setq perl-mode-map (make-sparse-keymap))
(define-key perl-mode-map "{" 'electric-perl-terminator)
(define-key perl-mode-map "}" 'electric-perl-terminator)
(define-key perl-mode-map ";" 'electric-perl-terminator)
...
所以我试了M-x set-variable perl-mode-map
,但我只得到[No match]
。
这是因为我的perl模式。El是预编译的?当我尝试M-x find-function perl-mode
时,它抱怨它找不到perl模式。埃尔。然而,我确实有一个perl模式。
将以下代码添加到配置文件(~/.emacs.d/init.el)
(defun perl-mode-disable-auto-indent ()
(local-unset-key (kbd "{"))
(local-unset-key (kbd "}"))
(local-unset-key (kbd ";"))
(local-unset-key (kbd ":")))
(add-hook 'perl-mode-hook 'perl-mode-disable-auto-indent)
我的错。我不知道在emacs中有普通变量和用户选项变量。
在刮痕缓冲区中运行(setq perl-mode-map (make-sparse-keymap))
,然后重新加载perl模式,为我禁用了电子缩进。
还有,谢谢你的回答syohex。
EDIT: 重新加载perl模式是很重要的。
关闭electric-indent-mode
为perl-mode
是我怎么做的。我在~/.emacs.d/init.el
(defun perl-mode-disable-auto-indent()
(electric-indent-mode -1))
(add-hook 'perl-mode-hook 'perl-mode-disable-auto-indent)
你可以在这里、这里和这里找到类似的文章