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

Posted

技术标签:

【中文标题】如何正确设置 Vim 自动缩进以编辑 Python 文件?【英文标题】:How do I set up Vim autoindentation properly for editing Python files? 【发布时间】:2010-09-09 01:38:15 【问题描述】:

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

【问题讨论】:

您的问题到底是什么?缩进是怎么破的? 您使用的是什么平台? Windows/Mac/Linux? 将此添加到 .vimrc filetype plugin indent on 【参考方案1】:

我在我的 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

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

【讨论】:

在编辑 C 风格语言时不要使用制表符。 s/noexpandtab/expandtab @AlexKreimer 你可能是对的——我在 2008 年写了这篇文章——那是 很久 以前的事了。我很想更新它,但我已经不再使用 vim 来处理大多数东西了。当您找到更好的解决方案时,请务必返回此处并发布指向更好答案的链接(或自己写一个)! @DarenThomas IMO,一个非常过时的答案【参考方案2】:

我用:

$ 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

但是我要去试试达人的条目

【讨论】:

请注意,smartindent 仅适用于编辑 C 文件,而不适用于 Python 文件(无论如何现在已弃用;请参阅 ***.com/a/234578/37639)。【参考方案3】:

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

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

【讨论】:

【参考方案4】:

我在 python 存储库中使用 vimrc 等:

http://svn.python.org/projects/python/trunk/Misc/Vim/vimrc

我也加了

set softtabstop=4

I have my old config here that I'm updating

【讨论】:

【参考方案5】:

确保您正在为 VIM 编辑正确的配置文件。特别是如果您使用的是 windows,文件可以命名为 _vimrc 而不是 .vimrc,就像在其他平台上一样。

在vim类型中

:help vimrc

并检查您的 _vimrc/.vimrc 文件的路径

:echo $HOME

:echo $VIM

确保您只使用一个文件。如果你想将你的配置拆分成更小的块,你可以从你的 _vimrc 文件中获取其他文件。

:help source

【讨论】:

【参考方案6】:

结合 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

【讨论】:

【参考方案7】:

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

【讨论】:

以上是关于如何正确设置 Vim 自动缩进以编辑 Python 文件?的主要内容,如果未能解决你的问题,请参考以下文章

Vim编辑器的自动缩进设定

vim 编辑器设置 行号和缩进

vi vim 括号自动缩进设置及解释

解决Linux下用vim写python的缩进不正确问题

vim粘贴取消自动缩进

如何正确设置 vim 以在 utf-8 中进行编辑