Emacs 批量缩进 Python
在Emacs中使用Python时,如果我想给一段代码加上try/except,我发现我常常需要一行一行地缩进整个代码块。在Emacs里,有没有办法一次性缩进整个代码块呢?
我不是一个经验丰富的Emacs用户,但我觉得它是通过ssh工作时最好的工具。我是在命令行(Ubuntu)中使用Emacs,而不是图形界面,这样有没有什么不同呢?
8 个回答
把 indent-region
这个功能设置为 C-M-\
,就可以解决这个问题了。
除了默认用 C-M-\
快捷键的 indent-region
功能外,矩形编辑命令在处理 Python 代码时也非常有用。你可以先选定一个区域,然后:
C-x r t
(string-rectangle
): 这个命令会让你输入想要插入到每一行的字符;特别适合用来插入一定数量的空格。C-x r k
(kill-rectangle
): 这个命令可以删除一个矩形区域;非常适合用来去掉缩进。
你还可以使用 C-x r y
(yank-rectangle
),不过这个功能用到的机会比较少。
如果你在用 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
包即可。