Як правильно налаштувати автоіндентацію Vim для редагування файлів Python?


82

У мене проблеми з налаштуванням Vim (7.1.xxx) для редагування файлів Python (* .py). Відступ, здається, порушений (оптимально 4 пробіли). Я дотримувався деяких підручників, які знайшов через Google. Все одно ніякого ефекту: / Будь ласка, допоможіть.


2
У чому саме полягає ваша проблема? Як порушується відступ?
cschol

1
Яку платформу ви використовуєте? Windows / Mac / Linux?
Джеймі

Відповіді:


74

Я використовую це у своєму 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 для більшості речей. Обов’язково поверніться сюди і розмістіть посилання на кращу відповідь (або напишіть його самостійно), коли ви знайдете краще рішення!
Daren Thomas

@DarenThomas IMO, дуже застаріла відповідь
Алекс Креймер

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він підходить лише для редагування файлів C, а не файлів Python (і в будь-якому випадку вже застарів; див. Stackoverflow.com/a/234578/37639 ).
corwin.amber

12

Більш простий варіант: просто розкоментуйте наступну частину конфігурації (яка спочатку закоментована) у файлі / etc / vim / vimrc:

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


3

Переконайтеся, що ви редагуєте правильний файл конфігурації для VIM. Особливо, якщо ви використовуєте вікна, де файл може бути названий _vimrc замість .vimrc, як на інших платформах.

У типі vim

:help vimrc

і перевірте шлях до файлу _vimrc / .vimrc за допомогою

:echo $HOME

:echo $VIM

Переконайтесь, що ви використовуєте лише один файл. Якщо ви хочете розділити свою конфігурацію на менші шматки, ви можете отримати інші файли з вашого файлу _vimrc.

:help source


1

Поєднуючи рішення, запропоновані Дареном і Таносом, ми маємо хороший файл .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 розгляньте можливість встановлення плагіна vim simplefold це дозволяє виконувати розширене згортання коду за допомогою регулярних виразів. я використовую його, щоб скласти визначення класу та методу для швидшого редагування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.