【问题标题】:Emacs on OSX breaks M-a and M-e in python-modeOSX 上的 Emacs 在 python 模式下打破了 M-a 和 M-e
【发布时间】:2020-12-12 17:28:22
【问题描述】:

我使用 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 上。我尝试过的其他语言似乎按预期工作。

【问题讨论】:

    标签: python emacs


    【解决方案1】:

    M-aM-epython-mode 中按预期工作。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      相关资源
      最近更新 更多