Wie richte ich die automatische Indimierung von Vim richtig ein, um Python-Dateien zu bearbeiten?

81

Ich habe Probleme beim Einrichten von Vim (7.1.xxx) zum Bearbeiten von Python-Dateien (* .py). Die Einrückung scheint unterbrochen zu sein (optimal 4 Leerzeichen). Ich habe einige Tutorials befolgt, die ich über Google gefunden habe. Immer noch keine Wirkung: / Bitte helfen Sie.

M_1
quelle
2
Was genau ist dein Problem? Wie ist die Einrückung gebrochen?
Cschol
1
Welche Plattform benutzt du? Windows / Mac / Linux?
Jamie

Antworten:

72

Ich benutze dies auf meinem 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

(bearbeitet, um nur Inhalte anzuzeigen, die sich auf Einrückungen / Tabulatoren beziehen)

Daren Thomas
quelle
1
Verwenden Sie beim Bearbeiten von Sprachen im C-Stil keine Registerkarten. s / noexpandtab / expandtab
badeip
@AlexKreimer Sie haben wahrscheinlich Recht - ich habe das 2008 geschrieben - das ist lange her. Ich würde es gerne aktualisieren, aber ich habe Vim für die meisten Dinge nicht mehr verwendet. Kommen Sie unbedingt hierher zurück und veröffentlichen Sie einen Link zu einer besseren Antwort (oder schreiben Sie selbst eine), wenn Sie eine bessere Lösung finden!
Daren Thomas
@DarenThomas IMO, eine sehr veraltete Antwort
Alex Kreimer
15

Ich benutze:

$ 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

Aber ich werde es mit Darens Einträgen versuchen

Danke
quelle
2
Beachten Sie, dass dies smartindentnur zum Bearbeiten von C-Dateien geeignet ist, nicht von Python-Dateien (und ohnehin inzwischen veraltet ist; siehe stackoverflow.com/a/234578/37639 ).
Corwin.amber
12

Eine einfachere Option: Kommentieren Sie einfach den folgenden Teil der Konfiguration (der ursprünglich auskommentiert wurde) in der Datei / etc / vim / vimrc aus:

    if has("autocmd")
      filetype plugin indent on
    endif
Teddy Belay
quelle
3

Stellen Sie sicher, dass Sie die richtige Konfigurationsdatei für VIM bearbeiten. Insbesondere, wenn Sie Windows verwenden, in dem die Datei _vimrc anstelle von .vimrc wie auf anderen Plattformen heißen könnte.

In vim Typ

:help vimrc

und überprüfen Sie Ihren Pfad zur Datei _vimrc / .vimrc mit

:echo $HOME

:echo $VIM

Stellen Sie sicher, dass Sie nur eine Datei verwenden. Wenn Sie Ihre Konfiguration in kleinere Blöcke aufteilen möchten, können Sie andere Dateien aus Ihrer _vimrc-Datei beziehen.

:help source

Jamie
quelle
0

Für eine erweiterte Python-Bearbeitung sollten Sie das simplefold vim-Plugin installieren . Es ermöglicht Ihnen das erweiterte Falten von Code mit regulären Ausdrücken. Ich benutze es, um meine Klassen- und Methodendefinitionen für eine schnellere Bearbeitung zu falten.

Gabor
quelle
0

Wenn wir die von Daren und Thanos vorgeschlagenen Lösungen kombinieren, haben wir eine gute .vimrc-Datei.

-----
" 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

Flávio Brito
quelle