如何正确设置Vim自动缩进以编辑Python文件?


80

我在设置Vim(7.1.xxx)来编辑Python文件(* .py)时遇到麻烦。缩进似乎已损坏(最佳4个空格)。我遵循了一些通过Google找到的教程。仍然没有效果:/请帮忙。


2
你到底是什么问题?压痕如何断开?
cschol

1
您正在使用什么平台?Windows / Mac / Linux?
杰米

Answers:


72

我在Macbook上使用它:

" configure expanding of tabs for various file types
au BufRead,BufNewFile *.py set expandtab
au BufRead,BufNewFile *.c set expandtab
au BufRead,BufNewFile *.h set expandtab
au BufRead,BufNewFile Makefile* set noexpandtab

" --------------------------------------------------------------------------------
" configure editor with tabs and nice stuff...
" --------------------------------------------------------------------------------
set expandtab           " enter spaces when tab is pressed
set textwidth=120       " break lines when line length increases
set tabstop=4           " use 4 spaces to represent tab
set softtabstop=4
set shiftwidth=4        " number of spaces to use for auto indent
set autoindent          " copy indent from current line when starting a new line

" make backspaces more powerfull
set backspace=indent,eol,start

set ruler                           " show line and column number
syntax on               " syntax highlighting
set showcmd             " show (partial) command in status line

(已编辑,仅显示与缩进/制表符相关的内容)


1
编辑C样式语言时,请勿使用标签。s / noexpandtab / expandtab
badeip's

@AlexKreimer您可能是对的-我在2008年写了这个-很久以前。我想更新它,但是我已经不再使用vim了。当您找到更好的解决方案时,请务必返回此处并发布指向更好答案的链接(或自己写一个)!
达伦·托马斯

@DarenThomas IMO,一个非常过时的答案
Alex Kreimer

14

我用:

$ cat ~/.vimrc
syntax on
set showmatch
set ts=4
set sts=4
set sw=4
set autoindent
set smartindent
set smarttab
set expandtab
set number

但我要尝试达人的作品


2
请注意,这smartindent仅适用于编辑C文件,不适用于Python文件(并且无论如何现在已经不推荐使用;请参见stackoverflow.com/a/234578/37639)。
corwin.amber16年

12

一个更简单的选项:只需在/ etc / vim / vimrc文件中取消注释配置的以下部分(最初被注释掉):

    if has("autocmd")
      filetype plugin indent on
    endif


3

确保您正在为VIM编辑正确的配置文件。特别是在使用Windows的情况下,在其他平台上,该文件的名称可能是_vimrc而不是.vimrc。

在vim类型

:help vimrc

并使用以下命令检查_vimrc / .vimrc文件的路径

:echo $HOME

:echo $VIM

确保只使用一个文件。如果要将配置分成较小的块,则可以从_vimrc文件内部获取其他文件。

:help source


0

要进行更高级的python编辑,请考虑安装simplefold vim插件。它允许您使用正则表达式进行高级代码折叠。我用它来折叠我的类和方法定义,以便更快地进行编辑。


0

结合Daren和Thanos提出的解决方案,我们有了一个很好的.vimrc文件。

-----
" configure expanding of tabs for various file types
au BufRead,BufNewFile *.py set expandtab
au BufRead,BufNewFile *.c set noexpandtab
au BufRead,BufNewFile *.h set noexpandtab
au BufRead,BufNewFile Makefile* set noexpandtab

" --------------------------------------------------------------------------------
" configure editor with tabs and nice stuff...
" --------------------------------------------------------------------------------
set expandtab           " enter spaces when tab is pressed
set textwidth=120       " break lines when line length increases
set tabstop=4           " use 4 spaces to represent tab
set softtabstop=4
set shiftwidth=4        " number of spaces to use for auto indent
set autoindent          " copy indent from current line when starting a new line
set smartindent
set smarttab
set expandtab
set number

" make backspaces more powerfull
set backspace=indent,eol,start

set ruler                           " show line and column number
syntax on               " syntax highlighting
set showcmd             " show (partial) command in status line

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.