用于Python的Emacs批量缩进

Ver*_*non 126 python emacs ssh

在Emacs中使用Python,如果我想在一段代码中添加try/except,我经常发现我必须逐行缩进整个块.在Emacs中,你如何一次缩进整个块.

我不是一个经验丰富的Emacs用户,但只是发现它是通过ssh工作的最佳工具.我在命令行(Ubuntu)上使用Emacs,而不是作为gui,如果这有任何区别.

unu*_*tbu 202

如果您使用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位.

PS.使用Ubuntu,要使python-mode成为所有.py文件的默认模式,只需安装python-mode包即可.

  • +1仍在帮助人们.谢谢你的回答. (3认同)
  • @redobot:`Cc Cl`和`Cc Cr`必须是您自己设置的自定义绑定。如果运行`emacs -q`(在不加载初始化文件的情况下运行emacs),您会发现在Python模式下没有Cc Cl`或Cc Cr的绑定。 (2认同)

Dan*_*ach 8

除了(默认情况下indent-region映射到)C-M-\,矩形编辑命令对Python非常有用.将区域标记为正常,然后:

  • C-x r t(string-rectangle):将提示您要插入每行的字符; 非常适合插入一定数量的空格
  • C-x r k(kill-rectangle):删除一个矩形区域; 非常适合删除缩进

你也可以C-x r y(yank-rectangle),但这很少有用.