无法将Enter绑定到';在Emacs中换行和缩进!!!很讨厌

无法将Enter绑定到';在Emacs中换行和缩进!!!很讨厌,emacs,Emacs,无法将Enter绑定到Emacs中的新行和缩进!!!很烦人 通过将“模式”更改为ruby,我已经在以下线程上尝试了所有方法,但仍然没有任何结果: 我知道问题在于返回键,因为如果我绑定到其他东西,就可以正常工作。 我尝试了[enter],(kbd“enter”),(读取kbd宏“enter”),(kbd“RET”) 后续行动1 这是我从C-hkRET得到的 RET运行命令newline,这是一个交互式编译的Lisp 功能 这是必然的 (换行符和可选参数) 插入新行,若为空,则移至新行的左边距。

无法将Enter绑定到Emacs中的新行和缩进!!!很烦人

通过将“模式”更改为ruby,我已经在以下线程上尝试了所有方法,但仍然没有任何结果:

我知道问题在于返回键,因为如果我绑定到其他东西,就可以正常工作。 我尝试了
[enter]
(kbd“enter”)
(读取kbd宏“enter”)
(kbd“RET”)


后续行动1

这是我从C-hkRET得到的

RET运行命令newline,这是一个交互式编译的Lisp 功能

这是必然的

(换行符和可选参数)

插入新行,若为空,则移至新行的左边距。 如果
使用硬换行符”为非nil,则换行符将标记为
文本属性
hard'。 使用ARG,插入那么多换行符。 如果当前列数大于,则调用
自动填充函数
小于
fill column'的值,且ARG为零

我不知道该如何理解它,也不知道如何判断它是否是一个全球性的问题 或者本地绑定,这会造成阻碍。试图重新映射C-j
也不起作用。

正如前面的评论所说,使用C-h k(描述键)查看键在不执行您想要的操作时绑定到什么。
(kbd“foo”)
语法对于
foo
descripe键所指的任何键都是正确的

很可能您只是没有在适当的keymap中定义该键

请注意,主模式和次模式键映射优先于全局键映射,因此如果覆盖了全局绑定,您不必感到惊讶

编辑:

我自己,我有一个钩子函数,用于我使用的所有编程模式的常见行为,它包括你想要的那种重新映射。相关部分如下所示:

(defun my-coding-config ()
  (local-set-key (kbd "RET") (key-binding (kbd "M-j")))
  (local-set-key (kbd "<S-return>") 'newline)
  )

(mapc
 (lambda (language-mode-hook)
   (add-hook language-mode-hook 'my-coding-config))
 '(cperl-mode-hook
   css-mode-hook
   emacs-lisp-mode-hook
   ;; etc...
   ))
(取消我的编码配置()
(本地设置密钥(kbd“RET”)(密钥绑定(kbd“M-j”))
(本地设置键(kbd“”)'换行符)
)
(mapc)
(lambda(语言模式挂钩)
(添加钩子语言模式钩子“我的编码配置”)
'(cperl模式挂钩
css模式挂钩
emacs lisp模式挂钩
等
))
请参阅Daimrod的回答,了解我为什么要将RET重新绑定到m-j的当前绑定——尽管我使用的是
注释缩进新行
(或类似),而不是
新行和缩进
(或类似),这在注释和非注释中都是我想要的

在Emacs 24中,编程模式似乎源于
prog mode
,因此您可能(未经测试)将该列表减少为
prog mode hook
,加上任何第三方模式的例外情况,这些第三方模式尚未这样做。

如前所述,使用C-hkC-j是因为 C-j是执行
换行和缩进的标准键

如果打开一个新文件,请激活
ruby模式
,然后尝试上一步 命令,您将看到它为什么不起作用。因为
ruby模式没有 有
换行和缩进
但是
重新缩进,然后换行和缩进
。是的,那很愚蠢,但你可以问 向维修方进行更改或接受

但是我建议你用C-j来做,因为
ruby模式
并不是唯一这样做的模式,比如
paredit模式

使用
paredit newline

如果您发布您尝试过的定制内容,而不是指向另一篇文章并说您已将模式更改为ruby,可能会有所帮助。最后一步可能有问题,但如果看不清楚您的确切意思,很难说。这是有效的:(全局设置键[(控制x)(控制y)]'换行和缩进)这不是:(全局设置键(kbd“RET”)'换行和缩进)也许您加载了一些重新绑定RET的模式?请尝试C-h k并按Enter键。那么您为什么不尝试一下
[(control j)]
?您能否准确地向我们展示您添加到init文件中的内容,以及
C-u M-x版本的报告?