OSX上的Emacs在python模式下中断了M-a和M-e

OSX上的Emacs在python模式下中断了M-a和M-e,python,emacs,Python,Emacs,我已经使用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

我已经使用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的末端

使用并购会导致类似的问题。C-a和C-e按预期工作

我重新映射了选项和命令,使它们更像我在Linx world中使用的一样

 ;; make MacOS sane
(setq mac-option-modifier 'control)
(setq mac-command-modifier 'meta)

这整件事很烦人,搜索没有提到这一点,因此没有解决方案。只有Python才会出现这个问题。我尝试过的其他语言似乎都能按预期工作。

M-a
M-e
python模式下正常工作

python模式下
这些键分别绑定到
python-nav-backward块
python-nav-forward块
。在您的示例中,行#a、#f和#g不启动python块,行#c和#e在python块内。您可以查看
python模式
定义为块的内容

python-nav-forward语句
python-nav-backward语句
中可以找到与您想要的行为相近的行为,它们分别移动到下一个或上一个语句的开头。默认情况下,这些函数不绑定到任何键