2010-01-06 13 views
11

Ho Vim 7 (migliorato) su CentOS 5 e viene fornito con tutti i soliti plug-in/script Vim pronti per l'uso.Il rientro di Vim Python non funziona?

$ find /usr/share/vim/vim70/ -name \*python\* 
/usr/share/vim/vim70/syntax/python.vim 
/usr/share/vim/vim70/ftplugin/python.vim 
/usr/share/vim/vim70/indent/python.vim 
/usr/share/vim/vim70/autoload/pythoncomplete.vim 

penserei che quando si apre un file con estensione .py (vim file.py) sarebbe caricare automaticamente questi plugin, ma non sono sicuro che sia il caso. Quello che voglio è:

Premere TAB e ricevere quattro spazi. Rientro automatico riga successiva per suite, condizionali, ecc.

Ho questo funzionamento impostando esplicitamente tabstop, shiftwidth, ecc. Nel mio file .vimrc. Non è questo per i file Python di cui sopra? Perché devo impostare queste cose nel mio .vimrc? Come faccio a ottenere queste funzionalità dai plugin Vim?

Vimrc attuale:

syntax on 
set hls 
set expandtab 
set textwidth=0 
set tabstop=4 
set softtabstop=4 
set shiftwidth=4 
set autoindent 
set backspace=indent,eol,start 
set incsearch 
set ignorecase 
set ruler 
set wildmenu 
set smarttab 
filetype indent on 
filetype on 
filetype plugin on 

risposta

2

Impostazione tabstop, shiftwidth, ecc ... nel vostro vimrc è corretta. Questi impostano le impostazioni globali e fungono da parametri per il supporto di indentazione specifico per tipo di file.

I plug-in di indentazione del linguaggio utilizzano queste impostazioni, ma in genere impostano anche un'espressione di rientro (:he inde) appropriata per la lingua. Quindi il penetratore Python dovrebbe essere indentato automaticamente dopo un'istruzione di apertura blocco (def, class, per ...), e la deduzione dopo una chiusura (return, pass, continue ...) e così facendo secondo la ts, sw, ... hai impostato.

Se siete ancora incerti se il plugin sta caricando per un buffer, è sufficiente fare :filetype per mostrare la rilevazione, plug-in, e le impostazioni di rientro, e :set ft? per vedere il tipo rilevato.

+0

Quindi, per riassumere il file ../indent/python.vim non è in grado di impostare il tabstop, shiftwidth, ecc per me ... quindi devono essere specificati all'interno del vimrc? Cosa succede se volessi che tabstop fosse diverso a seconda del tipo di file? Posso inserire queste impostazioni di vimrc nel file indent/python.vim in modo da caricarle solo per i file python? – CarpeNoctem

+0

È possibile aggiungere tali impostazioni a indent/python.vim e ottenere tale risultato, ma un modo migliore sarebbe aggiungere impostazioni specifiche per il tipo di file come autocmds che verranno eseguite dopo il caricamento di un buffer. (: lui au) – abeyer

5

La mia comprensione è che il file python.vim è solo un file di evidenziazione della sintassi, poiché i file Python possono essere rientrati in più modi. PEP8 prescrive quattro spazi, ma i file legacy potrebbero essere diversi tra cui l'utilizzo di schede.

Alcuni dei nostri file legacy Python utilizzano effettivamente due spazi per rientro. Quindi lascio Python a indentare Vim e configurarlo per file e per tipo di file. La seguente riga in .vimrc mi fornisce impostazioni specifiche per Python che differiscono da say my xml, xhtml e html (two spaces).

au FileType python setl shiftwidth=4 tabstop=4 

È inoltre possibile impostare le impostazioni specifiche da file con un modeline che è utile se si dispone di file legacy.

# vi: set tabstop=2 expandtab textwidth=70 filetype=python: 
Problemi correlati