emacs:如何将 python 代码的区域缩进/取消缩进 4 个空格?

Ian*_*non 61 keyboard-shortcuts text-editing python emacs indentation

我在 emacs 中选择了一个 python 代码区域。将其中的每一行缩进和取消缩进 4 个空格的最有效方法是什么?

理想情况下,我想要一些不是上下文敏感的东西(例如,它允许我在缩进与 python 语法无关的文档字符串中缩进段落)。

我的模式行显示(Python). 在网上搜索我发现有很多关于使用python-mode而不是的讨论python,但我几天前才开始使用 emacs,所以我很担心在我有机会理解它们之前更改默认值。如果更改为python-mode最佳选择,我很乐意接受它作为答案。

我尝试过的(来自手册):

  • <TAB> 没有效果
  • C-M-\ 没有效果
  • C-x <TAB> (indent-rigidly) 将每一行缩进一列(并取消选择区域)
  • M-i 将第一行缩进一个制表符(长度为 8 个空格)
  • C-M-q - “CMq 未定义”

我发现的唯一方法是使用 regex-replace,但对于这样一个简单的任务,击键次数非常多。

Che*_*evy 69

假设变量python-indent为 4:

M-x python-shift-right (C-c >)
M-x python-shift-left  (C-c <)
Run Code Online (Sandbox Code Playgroud)

  • 我不得不做`python-indent-shift-left`。 (5认同)

Gil*_*il' 18

indent-rigidly接受一个前缀参数,指示缩进多少,因此C-u 42 C-x TAB缩进 42 列,并且由于默认前缀参数是 4,因此C-u C-x TAB缩进 4 列。

如果您想再次选择区域,请C-x C-x稍后进行。


Kei*_*thB 9

使用带有数字前缀的 indent-rigidly 命令。

C-u 4 M-x indent-rigidly将区域缩进四个空格,C-u -4 M-x indent-rigidly删除四个空格。