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