在 emacs python-mode 中不正确地退出缩进

2024-03-06

我正在使用 Emacs python 模式。我在我的中使用它来调用它.emacs

(add-to-list 'load-path "~/emacs/python-mode.el-6.0.3/")
(autoload 'python-mode "python-mode" "Python Mode." t)
(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
(add-to-list 'interpreter-mode-alist '("python" . python-mode))
(require 'python-mode)
(add-hook 'python-mode-hook
      (lambda ()
    (set-variable 'py-indent-offset 4)
    ;(set-variable 'py-smart-indentation nil)
    (set-variable 'indent-tabs-mode nil)
    (define-key py-mode-map (kbd "RET") 'newline-and-indent)
    ;(define-key py-mode-map [tab] 'yas/expand)
    ;(setq yas/after-exit-snippet-hook 'indent-according-to-mode)
    ))

它通常缩进没问题,因为如果我写:

if condition:

然后按回车键,它会正确地将光标放在缩进的换行符中。问题是它没有exit正确退出缩进。在其他系统中,当我在缩进子句的正文中换行时(例如if语句正文)并按 Backspace,它会在缩进中跳出一级,而不是退格。例如,如果我有:

if condition: 
  statement1
  statement2

然后我按了回车键、退格键statement2,它将把光标放在这里:

if condition: 
  statement1
  statement2
<-- cursor position

如果你有很多缩进级别并且它不这样做,那么编辑 Python 就变得不可能,因为你必须手动退格直到到达正确的缩进级别......这很容易出错并且很烦人,例如如果你有:

for something:
  for other:
    if hello:
      while x:
         statement1
         <-- How to indent back to level of "for other"?

EDIT:当我以“emacs -nw”运行 emacs 时,我无法让它工作(我正在远程登录到服务器,并且不希望启动 X 界面)。当我删除“-nw”并使用 emacs 时,远程使用较慢的 X 界面,一切正常......知道为什么会这样吗?这可能是与退格键或类似问题相关的 shell 配置问题吗?

如何解决这个问题?如果我在子句中,我只想让它在缩进级别退格。谢谢。


对于现代版本的 Emacs,使用 python.el,而不是 python-mode.el https://stackoverflow.com/a/157074/190597。 如果您从 .emacs 中删除所有这些行,我认为 python.el 将默认启用,并且当您打开 .py 文件时,您将获得 Python 模式。

我在我的系统上测试了空白默认设置,在您的示例中,退格键可以正确返回一级缩进。

所以答案似乎是“什么也不做!” :)


在 Ubuntu 上,python.el 由 emacs23-common 包提供,该包是标准 emacs 安装的一部分:

% dpkg -S /usr/share/emacs/23.3/lisp/progmodes/python.elc
emacs23-common: /usr/share/emacs/23.3/lisp/progmodes/python.elc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 emacs python-mode 中不正确地退出缩进 的相关文章

  • Python中Decimal类型的澄清

    每个人都知道 或者至少 每个程序员都应该知道 http docs oracle com cd E19957 01 806 3568 ncg goldberg html 即使用float类型可能会导致精度错误 然而 在某些情况下 精确的解决方
  • Python - 将宽字符字符串从二进制文件转换为 Python unicode 字符串

    这是漫长的一天 我有点困惑 我正在读取一个包含大量宽字符字符串的二进制文件 我想将它们转储为 Python unicode 字符串 为了解压非字符串数据 我使用 struct 模块 但我不知道如何对字符串执行相同的操作 例如 阅读 系列 一
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • python 模拟第三方模块

    我正在尝试测试一些处理推文的类 我使用 Sixohsix twitter 来处理 Twitter API 我有一个类充当 Twitter 类的外观 我的想法是模拟实际的 Sixohsix 类 通过随机生成新推文或从数据库检索它们来模拟推文的
  • 在 Python distutils 中从 setup.py 查找脚本目录的正确方法?

    我正在分发一个具有以下结构的包 mymodule mymodule init py mymodule code py scripts script1 py scripts script2 py The mymodule的子目录mymodul
  • Argparse nargs="+" 正在吃位置参数

    这是我的解析器配置的一小部分 parser add argument infile help The file to be imported type argparse FileType r default sys stdin parser
  • 如何在 pytest 中将单元测试和集成测试分开

    根据维基百科 https en wikipedia org wiki Unit testing Description和各种articles https techbeacon com devops 6 best practices inte
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • 如何通过在 Python 3.x 上按键来启动和中断循环

    我有这段代码 当按下 P 键时会中断循环 但除非我按下非 P 键 否则循环不会工作 def main openGame while True purchase imageGrab if a sum gt 1200 fleaButton ti
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • 使用鼻子获取设置中当前测试的名称

    我目前正在使用鼻子编写一些功能测试 我正在测试的库操作目录结构 为了获得可重现的结果 我存储了一个测试目录结构的模板 并在执行测试之前创建该模板的副本 我在测试中执行此操作 setup功能 这确保了我在测试开始时始终具有明确定义的状态 现在
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • Emacs如何自动完成C上包含文件的单词?

    如何使 Emacs 完成 C 包含文件中的单词 include
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • 使用 Firefox 绕过弹出窗口下载文件:Selenium Python

    我正在使用 selenium 和 python 来从中下载某些文件web page http www oceanenergyireland com testfacility corkharbour observations 我之前一直使用设
  • 使用 NumPy 将非均匀数据从文件读取到数组中

    假设我有一个如下所示的文本文件 33 346 1223 10 23 11 23 12 23 13 23 14 23 15 23 16 24 10 24 11 24 12 24 13 24 14 24 15 24 16 25 14 25 15
  • 迭代 my_dict.keys() 并修改字典中的值是否会使迭代器失效?

    我的例子是这样的 for my key in my dict keys my dict my key mutate 上述代码的行为是否已定义 假设my dict是一本字典并且mutate是一个改变其对象的方法 我担心的是 改变字典中的值可能
  • Ubuntu 上的 Python 2.7

    我是 Python 新手 正在 Linux 机器 Ubuntu 10 10 上工作 它正在运行 python 2 6 但我想运行 2 7 因为它有我想使用的功能 有人敦促我不要安装 2 7 并将其设置为我的默认 python 我的问题是 如
  • 字典和数组作为类变量与实例变量

    这是赚取积分的简单方法 请解释以下内容 class C a b 0 c def init self self x def d self k v self x k v self a k v self b v self c append v d

随机推荐

  • Oracle 11g 支持的 JDBC、JDK 版本

    我们正在将数据库从 oracle 10g 升级到 11g 希望我们现在的JDK1 6能够支持这个 Oracle 11g 的理想 JDBC 版本是什么 目前我们使用的是ojdbc 14 jar 它支持11g吗 请确认我 根据甲骨文常见问题解答
  • 如何在 npm 模块上使用 Web Worker

    我正在编写一个 JavaScript 库 并且正在使用一个网络工作者 我正在使用 webpack 带有worker loader 来创建我的构建 图书馆一切正常 webpack config js test app worker ts in
  • 如何将QT国际化集成到CMake中?

    大家好 我正在尝试将 QT 国际化与 CMake 结合使用 我的 cmake 文件配置如下 Internalization this should generate core jp ts SET rinzo core TRANSLATION
  • 用于在函数上插入值的 cin 命令

    我怎样才能使用cin为函数插入值 cin gt gt addNumber cout lt lt addNumber lt lt endl 我不确定我是否正确使用了上面的这些行 我应该使用什么命令 单词或任何名称才能做到这一点 我正在尝试为变
  • 使用 Visual Studio 构建 UEFI 驱动程序

    我正在寻找有关如何使用 Visual Studio 2012 项目通过 EDK2 SDK 构建 UEFI 驱动程序的建议 我试图静态链接 UefiLib lib 但惨败 我已将该库添加到链接器下的附加依赖项中 include
  • 从 r 中的二高斯混合生成样本(MATLAB 中给出的代码)

    我正在尝试 在 r 中 创建与以下 MATLAB 函数等效的函数 该函数将从 N m1 s1 2 和 N m2 s2 2 与分数的混合物生成 n 个样本 alpha 来自第一个高斯 我有一个开始 但 MATLAB 和 R 之间的结果明显不同
  • Knockout 无法处理绑定

    当文本未定义时如何绑定文本 例如名称不可用 table class table thead tr th class col md 4 ID th th class col md 4 Name th tr thead tbody tr td
  • 使用 moment.js 进行 Jasmine 约会模拟

    我在应用程序中使用 moment js 来处理日期 时间 但它似乎与 Jasmine 的模拟功能配合得不好 我在下面整理了一个测试套件来显示我的问题 jasmine clock mockDate似乎暂时不起作用 但它可以很好地工作Date
  • 在 Android 中使用 DOM 解析器

    我使用 DOM 解析器从 XML 文件中检索信息 如下所示
  • 如何将所有提交从一个分支移动到另一个分支?

    场景是这样的 X1 X2 X3 X4 X5 X6 master D1 D2 D3 dev B1 B2 B3 bug1 我想将所有提交移至bug1分支到 master 分支并删除 bug1 分支 在这种情况下 X1 X2 X3 X4 X5 X
  • DataGrid 周围的 WPF ScrollViewer 影响列宽

    我使用 ScrollViewer 来滚动包含数据网格的用户控件时遇到问题 如果没有滚动查看器 列会按照我想要的方式填充数据网格 但是当添加滚动查看器时 列会缩小到约 15 像素 我能够简化我的布局 并且仍然可以重现这种行为 将数据网格宽度绑
  • 用户单击 Office 应用程序中的链接时未找到 OpenIdConnect 相关 Cookie

    我有一个使用 OpenIdConnect 向 Azure Active Directory 进行身份验证的应用程序 一切工作正常 除非我从 Office 应用程序 excel word 链接到我的网站 从这些应用程序中 我收到 异常 关联失
  • Typescript 泛型 keyof 与类型不匹配

    我有这个接口 它只存储另一个接口的密钥 modelKey 和该键的值 value interface ValueHolder
  • php cron 作业也执行 javascript

    我有一个运行 php 脚本的 cron 作业 但是我需要执行一些 html 和 javascript 才能使实际脚本正常工作 将 javascript 转换为 php 不是一个选项 基本上我需要它就像一个人在每次 cronjob 运行时正在
  • NSTableView 重绘不更新显示,选择粘贴

    尽管我知道这个问题的解决方案 但我很感兴趣是否有人可以向我解释这个解决方案 我也想把这个问题弄清楚 因为我在网上找不到任何关于这个问题的提及 而且我花了几天的时间才找到这个问题 我有一个 NSTableView 在重绘及其选择方面表现得很奇
  • 这是尾递归吗?

    我试图找到尾递归的例子 但我真的没有看到常规和尾递归之间的区别 如果这不是尾递归 有人能告诉我为什么不是吗 public static long fib long index assume index gt 0 if index 0 Bas
  • System.Diagnostics.Activity 在 aspnet core 2.1 中为空

    我们刚刚将 aspnet core 2 0 应用程序更新到 2 1 并且在使用 依赖方面遇到了问题System Diagnostics Activity 背景 我们希望跨服务边界传递一致的 关联 ID 以便我们可以关联每个请求的日志条目 我
  • 如何在 WPF 菜单项中禁用助记符?

    我有动态字符串显示为 MenuItem 的标题 其中有时包含 WPF 将下划线视为助记符 但我不希望这样 我如何禁用它 尝试了线程中的所有解决方案后WPF 列表框 跳过字符串中的下划线符号 https stackoverflow com q
  • 一旦禁用了 ios 中的空闲计时器(以允许显示器再次休眠),如何重新启用它?

    我已经找到了如何阻止 iOS 设备进入睡眠状态 见下文 但我在撤消该设置时遇到了麻烦 根据苹果文档 https developer apple com documentation uikit uiapplication 1623070 id
  • 在 emacs python-mode 中不正确地退出缩进

    我正在使用 Emacs python 模式 我在我的中使用它来调用它 emacs add to list load path emacs python mode el 6 0 3 autoload python mode python mo