Emacs 批量缩进 Python

148 投票
8 回答
50408 浏览
提问于 2025-04-15 21:17

在Emacs中使用Python时,如果我想给一段代码加上try/except,我发现我常常需要一行一行地缩进整个代码块。在Emacs里,有没有办法一次性缩进整个代码块呢?

我不是一个经验丰富的Emacs用户,但我觉得它是通过ssh工作时最好的工具。我是在命令行(Ubuntu)中使用Emacs,而不是图形界面,这样有没有什么不同呢?

8 个回答

4

indent-region 这个功能设置为 C-M-\,就可以解决这个问题了。

11

除了默认用 C-M-\ 快捷键的 indent-region 功能外,矩形编辑命令在处理 Python 代码时也非常有用。你可以先选定一个区域,然后:

  • C-x r t (string-rectangle): 这个命令会让你输入想要插入到每一行的字符;特别适合用来插入一定数量的空格。
  • C-x r k (kill-rectangle): 这个命令可以删除一个矩形区域;非常适合用来去掉缩进。

你还可以使用 C-x r y (yank-rectangle),不过这个功能用到的机会比较少。

240

如果你在用 Emacs 编写 Python 代码,那么你可能需要使用 python-mode。使用 python-mode 后,选中一段代码后,

C-c >C-c C-l 可以把选中的代码块向右移动 4 个空格。

C-c <C-c C-r 可以把选中的代码块向左移动 4 个空格。

如果你需要移动代码块两级缩进,或者其他任意数量的空格,可以在命令前加上一个参数:

C-u 8 C-c > 可以把选中的代码块向右移动 8 个空格。

C-u 8 C-c < 可以把选中的代码块向左移动 8 个空格。

还有一种方法是使用 M-x indent-rigidly,这个命令可以通过 C-x TAB 来调用:

C-u 8 C-x TAB 可以把选中的代码块向右移动 8 个空格。

C-u -8 C-x TAB 可以把选中的代码块向左移动 8 个空格。

还有一些很有用的 矩形命令,它们可以对文本的矩形区域进行操作,而不是单独的行。

例如,选中一个矩形区域后,

C-x r o 会在这个矩形区域内插入空白(实际上是把代码向右移动)。

C-x r k 会删除这个矩形区域(实际上是把代码向左移动)。

C-x r t 会提示你输入一个字符串来替换这个矩形区域。输入 C-u 8 <space> 就会在这个区域内填入 8 个空格。

另外,如果你在 Ubuntu 上想让 python-mode 成为所有 .py 文件的默认模式,只需安装 python-mode 包即可。

撰写回答