2016-09-18 3 views
2

Я получаю следующее поведение. Учитывая это settings.py фрагмент кода, попав «о» от линии 33Vim double-indents python files

31# Application definition 
32 
33 INSTALLED_APPS = [ 
34  'rest_framework', 

Я получаю это

31# Application definition 
32 
33 INSTALLED_APPS = [ 
34   |<-cursor is here, two indents, 8 spaces 
35  'rest_framework', 

То, что я действительно хочу бы один абзац, или в общей сложности 4 пространств, в соответствии с остальными списка. Что дает? Я использую следующий .vimrc который я главным образом cribbed от here.

set nocompatible    " required 
filetype off     " required 

" set the runtime path to include Vundle and initialize 
set rtp+=~/.vim/bundle/Vundle.vim 
call vundle#begin() 

" alternatively, pass a path where Vundle should install plugins 
"call vundle#begin('~/some/path/here') 

" let Vundle manage Vundle, required 
Plugin 'gmarik/Vundle.vim' 

" Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin) 

" Themes 
Plugin 'altercation/vim-colors-solarized' 
Plugin 'jnurmine/Zenburn' 

" All of your Plugins must be added before the following line 
call vundle#end()   " required 
filetype plugin indent on " required 

if has('gui_running') 
    set background=dark 
    colorscheme solarized 
else 
    colorscheme zenburn 
endif 

au BufNewFile,BufRead *.py set tabstop=4 shiftwidth=4 textwidth=79 expandtab autoindent fileformat=unix 

set encoding=utf-8 
set nu 
let python_highlight_all=1 
syntax on 
set backspace=indent,eol,start 

ответ

3

Это происходит из-за стандартного плагина vim indentation для Python. Он вставляет 2 shiftwidth в первую строку ниже [.

Вы можете увидеть код, который вызывает такое поведение здесь: https://github.com/vim/vim/blob/0b9e4d1224522791c0dbbd45742cbd688be823f3/runtime/indent/python.vim#L74

Я бы порекомендовал вам установить vim-python-pep8-indent плагин, который делает отступ внутри скобок точно так, как вам нужно.

+0

Отлично, спасибо. –