OSX 上的 Emacs 在 python 模式下中断 M-a 和 M-e
Emacs on OSX breaks M-a and M-e in python-mode
我用emacs有一段时间了,一般用在Linux。我目前在 OSX Catalina 上安装了 emacs,M-a 和 M-e 在 python 模式下似乎工作得不是很好。
我将尝试用这段代码进行说明,但如果您遇到了这个问题,我认为不需要太多解释:
L = [1, 2, 3, 4] #a
def double(x): #b
return x * 2 #c
def fun(x): #d
return [double(i) for i in x] #e
zz = fun(L) #f
print(zz) #g
如果我从#a 行的开头开始,M-e,我只能到达#b 和#d 行的开头,而不能再往下走。我希望能够到达#c、#e、#f 和#g 的结尾。
使用 M-a 会导致类似的问题。 C-a 和 C-e 按预期工作。
我重新映射了选项和命令,这样它们就更像我在 Linx 世界中习惯使用的东西了。
;; make MacOS sane
(setq mac-option-modifier 'control)
(setq mac-command-modifier 'meta)
整个事情很烦人,搜索没有谈到这个,因此没有解决方案。此问题仅在 Python 时出现。我尝试过的其他语言似乎都按预期工作。
M-a
和 M-e
在 python-mode
中按预期工作。
在python-mode
中,这些键分别绑定到python-nav-backward-block
和python-nav-forward-block
。在您的示例中,#a、#f 和#g 行不开始 python 的块,#c 和 #e 行在 python 内块。您可以查看 python-mode
定义为块的内容 here.
可以在 python-nav-forward-statement
和 python-nav-backward-statement
中找到接近您想要的行为,它们分别移动到下一个或上一个语句的 beginning。默认情况下,这些函数不绑定任何键。
我用emacs有一段时间了,一般用在Linux。我目前在 OSX Catalina 上安装了 emacs,M-a 和 M-e 在 python 模式下似乎工作得不是很好。
我将尝试用这段代码进行说明,但如果您遇到了这个问题,我认为不需要太多解释:
L = [1, 2, 3, 4] #a
def double(x): #b
return x * 2 #c
def fun(x): #d
return [double(i) for i in x] #e
zz = fun(L) #f
print(zz) #g
如果我从#a 行的开头开始,M-e,我只能到达#b 和#d 行的开头,而不能再往下走。我希望能够到达#c、#e、#f 和#g 的结尾。
使用 M-a 会导致类似的问题。 C-a 和 C-e 按预期工作。
我重新映射了选项和命令,这样它们就更像我在 Linx 世界中习惯使用的东西了。
;; make MacOS sane
(setq mac-option-modifier 'control)
(setq mac-command-modifier 'meta)
整个事情很烦人,搜索没有谈到这个,因此没有解决方案。此问题仅在 Python 时出现。我尝试过的其他语言似乎都按预期工作。
M-a
和 M-e
在 python-mode
中按预期工作。
在python-mode
中,这些键分别绑定到python-nav-backward-block
和python-nav-forward-block
。在您的示例中,#a、#f 和#g 行不开始 python 的块,#c 和 #e 行在 python 内块。您可以查看 python-mode
定义为块的内容 here.
可以在 python-nav-forward-statement
和 python-nav-backward-statement
中找到接近您想要的行为,它们分别移动到下一个或上一个语句的 beginning。默认情况下,这些函数不绑定任何键。