自动缩进不适用于Python的“with”

时间:2017-01-15 15:08:23

标签: python vim indentation auto-indent

我在Ubuntu 16.04上使用VIM 7.4,并且正在编写Python 3.5。

编写Python文件(.py)时,缩进工作完美,但with语句除外。也就是说,我可以重新映射 tab 缩进四个空格,VIM在冒号(:)后自动缩进四个空格,依此类推。

但是当谈到with ... as语法时,它无法缩进换行符。

视觉示例:

if x == 12:

然后 tab 会产生缩进的换行符,但是

with open("test.txt", 'r') as file:

然后 tab 导致没有缩进的换行符。

我查了很多问题,我不会因为篇幅太多而无法链接,但这里有一些我试过的事情:

  • set autoindent;
  • 中添加.vimrc
  • set smartindent;
  • 中添加.vimrc
  • 在VIM的口译员中输入filetype indent on;
  • 键入:set indentkeys?并检查冒号是否在列表中(它是)。

它几乎是空的,所以我怀疑它会有用,但这是我的.vimrc

set nocompatible
set autoindent
set smartindent
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
inoremap <S-Tab> <C-d>

如何修复VIM,以便在换行符后识别with...as并缩进?

1 个答案:

答案 0 :(得分:3)

解决方案确实在filetype indent on命令中。

出于某种原因,在VIM解释器中键入它将不会执行任何操作。因此,人们可能会认为这不是解决这个问题的方法。

但是,将以下行添加到.vimrc有效地解决了问题:

filetype indent on