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

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

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

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

我的模式行显示(Python)。在网上搜索后,我发现了很多关于使用python-mode而不是python,但我几天前才开始使用 emacs,因此在有机会理解和使用它们之前,我对更改默认值持谨慎态度。如果更改为python-mode是最好的选择,我很乐意接受它作为答案。

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

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

我发现的唯一方法是使用正则表达式替换,但对于如此简单的任务来说,这需要太多的击键次数。

答案1

假设变量python-indent为4:

M-x python-shift-right (C-c >)
M-x python-shift-left  (C-c <)

答案2

indent-rigidly采用前缀参数来指示缩进的量,因此C-u 42 C-x TAB缩进 42 列,并且由于默认前缀参数为 4,C-u C-x TAB因此缩进 4 列。

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

答案3

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

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

答案4

您也可以使用列模式。

以列模式选择行,然后一次向所有行添加四个空格:

  1. 跳转到您想要缩进的第一行的第 1 列。
  2. C-<space>留下痕迹
  3. 将点移至最后一行(留在第一列)
  4. C-x r t进入列模式(或者C-<RET>如果你有 CUA 模式)
  5. <space><space><space><space><RET>

您可以执行类似的操作来删除四个空格 - 只需在标记区域内包含 4 列(步骤 2-3)并点击<DEL>

相关内容