如何在没有自动缩进的情况下粘贴到 emacs --no-window-system 中?

Tan*_*n六四 4 emacs paste

如果我emacs -nw使用鼠标中键或 Ctrl+Shift+v(在 gnome-terminal 中从剪贴板粘贴)将浏览器中的一段代码粘贴到,则缩进不正确。

原始代码:

for (i=0; i<=10; i++) {
    j = j + i;
    print j;
}
Run Code Online (Sandbox Code Playgroud)

变成:

for (i=0; i<=10; i++) {
          j = j + i;
                print j;
                    }
Run Code Online (Sandbox Code Playgroud)

在 vim 中,一个会关闭自动缩进。在 emacs 中,我尝试了两种不起作用的方法:

方法一:

配置 ctrl+y 以使用 ~/.emacs 中的 PRIMARY 选择

(setq x-select-enable-primary t)
Run Code Online (Sandbox Code Playgroud)

并尝试使用 Ctrl-y 而不是鼠标中键或 Ctrl+Shift+V 粘贴。结果:ctrl-y 仅粘贴来自 emacs 的终止环,而不是来自外部选择。

方法 2:从newline-and-indent以下位置取消映射 RET :

(add-hook 'lisp-mode-hook '(lambda ()
  (local-set-key (kbd "RET") 'newline)))
Run Code Online (Sandbox Code Playgroud)

它适用于键入 RET(无缩进),但对于鼠标中键或 Ctrl+Shift+V 自动缩进无论如何都会应用。

小智 6

当遇到换行符时,emacs 中会发生自动缩进。您可以使用electric-indent-local-modeelectric-indent-mode切换此设置。

来自http://emacsredux.com/blog/2013/03/29/automatic-electric-indentation/

鲜为人知的是,Emacs 24.1 引入了一种新的全局次要模式,称为电缩进模式。启用后,键入某些字符(如换行符)会触发重新缩进。