emacs -nw
如果我使用鼠标中键或 Ctrl+Shift+v(在 gnome-terminal 中从剪贴板粘贴)将一段代码从浏览器粘贴到,它会被错误缩进。
原始代码:
for (i=0; i<=10; i++) {
j = j + i;
print j;
}
变成:
for (i=0; i<=10; i++) {
j = j + i;
print j;
}
在 vim 中,可以关闭自动缩进。在 emacs 中,我尝试了两种方法,但都不起作用:
方法 1:
配置 ctrl+y 以在 ~/.emacs 中使用 PRIMARY 选择
(setq x-select-enable-primary t)
并尝试使用 Ctrl-y 而不是鼠标中键或 Ctrl+Shift+V 进行粘贴。结果:ctrl-y 只能从 emacs 的 kill ring 粘贴,而不能从外部选择粘贴。
方法 2:取消 RET 映射newline-and-indent
:
(add-hook 'lisp-mode-hook '(lambda ()
(local-set-key (kbd "RET") 'newline)))
它适用于输入 RET(无缩进),但对于鼠标中键或 Ctrl+Shift+V 也会应用自动缩进。
答案1
当遇到换行符时,emacs 会自动缩进。您可以使用electric-indent-local-mode
和electric-indent-mode
来切换此设置。
从http://emacsredux.com/blog/2013/03/29/automatic-electric-indentation/
鲜为人知的是,Emacs 24.1 引入了一种新的全局次要模式,称为 electric-indent-mode。启用后,输入某些字符(如换行符)会触发重新缩进。