Jak prawidłowo ustawić automatyczne wcięcie Vima do edycji plików Pythona?


83

Mam problem ze skonfigurowaniem Vima (7.1.xxx) do edycji plików Pythona (* .py). Wcięcie wydaje się być zepsute (optymalne 4 spacje). Skorzystałem z kilku samouczków, które znalazłem za pośrednictwem Google. Nadal bez efektu: / Proszę o pomoc.


2
Jaki jest twój problem? Jak łamane jest wcięcie?
cschol

1
Z jakiej platformy korzystasz? Windows / Mac / Linux?
Jamie

Odpowiedzi:


75

Używam tego na moim Macbooku:

" 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

(edytowane, aby pokazać tylko rzeczy związane z wcięciami / tabulatorami)


1
Nie używaj zakładek podczas edycji języków w stylu C. s / noexpandtab / expandtab
badeip

@AlexKreimer prawdopodobnie masz rację - napisałem to w 2008 roku - to dawno temu. Chciałbym to zaktualizować, ale odszedłem od używania vim do większości rzeczy. Pamiętaj, aby tu wrócić i opublikować link do lepszej odpowiedzi (lub napisz ją sam), gdy znajdziesz lepsze rozwiązanie!
Daren Thomas

@DarenThomas IMO, bardzo przestarzała odpowiedź
Alex Kreimer

15

Używam:

$ 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

Ale mam zamiar wypróbować wpisy Darena


2
Zauważ, że smartindentnadaje się tylko do edycji plików C, a nie plików Pythona (i tak jest już przestarzała; zobacz stackoverflow.com/a/234578/37639 ).
corwin.amber

12

Prostsza opcja: po prostu odkomentuj następującą część konfiguracji (która została oryginalnie zakomentowana) w pliku / etc / vim / vimrc:

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


3

Upewnij się, że edytujesz poprawny plik konfiguracyjny dla VIM. Zwłaszcza jeśli używasz systemu Windows, gdzie plik mógłby nosić nazwę _vimrc zamiast .vimrc, jak na innych platformach.

W typie vim

:help vimrc

i sprawdź ścieżkę do pliku _vimrc / .vimrc za pomocą

:echo $HOME

:echo $VIM

Upewnij się, że używasz tylko jednego pliku. Jeśli chcesz podzielić konfigurację na mniejsze części, możesz pozyskać inne pliki z pliku _vimrc.

:help source


1

Łącząc rozwiązania zaproponowane przez Darena i Thanosa otrzymujemy dobry plik .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

aby uzyskać bardziej zaawansowaną edycję w Pythonie, rozważ zainstalowanie prostej wtyczki vim. pozwala na zaawansowane zwijanie kodu za pomocą wyrażeń regularnych. używam go do zwijania definicji klas i metod w celu szybszej edycji.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.