Pythonファイルを編集するためにVimの自動インデンテーションを適切に設定するにはどうすればよいですか?


83

Pythonファイル(* .py)を編集するためのVim(7.1.xxx)の設定に問題があります。インデントが壊れているようです(最適な4スペース)。Googleで見つけたいくつかのチュートリアルに従いました。それでも効果はありません:/助けてください。


2
あなたの問題は正確には何ですか?インデントはどのように壊れていますか?
cschol 2008

1
どのプラットフォームを使用していますか?Windows / Mac / Linux?
ジェイミー

回答:


75

私はこれを私の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

@AlexKreimerあなたはおそらく正しいです-私は2008年にこれを書きました-それはずっと前のことです。更新したいのですが、ほとんどの場合、vimの使用をやめました。より良い解決策を見つけたら、必ずここに戻って、より良い答えへのリンクを投稿してください(または自分で書いてください)。
ダレントーマス

@DarenThomas IMO、非常に時代遅れの回答
AlexKreimer20年

15

私が使う:

$ 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は、Pythonファイルではなく、Cファイルの編集にのみ適していることに注意してください(とにかく、現在は非推奨です。stackoverflow.com/ a / 234578/37639を参照してください)。
corwin.amber 2016

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

1つのファイルのみを使用していることを確認してください。構成をより小さなチャンクに分割したい場合は、_vimrcファイル内から他のファイルを調達できます。

:help source


1

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


0

より高度なPython編集については、simplefoldvimプラグインのインストールを検討してください。正規表現を使用して高度なコード折り畳みを行うことができます。私はそれを使用してクラスとメソッドの定義を折りたたんで編集を高速化します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.