2011-12-13 11 views
7

Qualcuno ha la configurazione di vim in un modo che utilizza le schede rigide come caratteri di indentazione, ma utilizza gli spazi per l'allineamento? Il problema che ho è che quando si inizia una linea di continuazione come inVim: utilizza schede per il rientro, spazi per l'allineamento con i file di origine C

if (condition1 && (anotherlongcondition || /* <-- Here I insert a newline */ 
|-------|------- whatever /* some additional alignment added automatically */ 

, quindi cin (che è un must per me) aggiunge un po 'di allineamento solo il modo che preferisco positionally, ma questo allineamento viene creato utilizzando come schede molto più difficili possibili e riempire il resto con spazi (come ho provato a visualizzare).

Così, in breve, cin non sembra davvero di distinguere tra indentazione e allineamento. Mi piacerebbe davvero che tutto l'allineamento aggiunto nell'esempio sopra fosse spazi. In questo modo l'allineamento verrebbe mantenuto correttamente quando si cambia temporaneamente ts.

Per chiarire ancora una volta, mi piacerebbe essere in grado di scrivere il codice seguente, mai premendo <TAB> o <SPACE> davanti al primo carattere non vuoto in qualsiasi linea (e non fare alcun cambiamento di manuale o qualsiasi altra cosa) :

void foo(int bar) 
{ 
|-------somestatement; 
|-------if (somecondition && (someothercondition || 
|-------      whatevercomesnext)) 
|-------|-------dosomething; 
} 

ho già provato ctab.vim, ma si concentra sulla editing una linea allineata con compresse morbide, che sembra stupido perché allineamento manuale è un compito che offre 1-fase di raffinazione e non tabulazioni affinamento larghezza-passo. Non ho cambiato il modo in cui cin utilizza schede miste e spazi per l'allineamento.

Non sono riuscito a trovare alcun modo integrato per farlo. Forse ancora, ce n'è uno? Ad ogni modo, dubito che ci sia un plugin che lo faccia. Anche se devo ammettere che non fare vim-script me stesso e non posso avere abbastanza esperienza, devo dire che la maggior parte dei plugin ho provato incasinato solo il mio editor di configurazione ...

+0

Sto usando 'ctab.vim' (versione 2.6), e sembra fare ciò che si vuole ottenere, cioè quando si digita il frammento di codice sopra, non lo faccio è necessario digitare qualsiasi carattere di tabulazione o spazio per formattarlo correttamente – ekoeppen

risposta

1

Va bene, mi spiace per la questione. Finalmente ho trovato del buon materiale per questo.

http://vim.1045645.n5.nabble.com/Indent-with-tabs-align-with-spaces-td1183279.html

In sintesi, attualmente vim non è abbastanza flessibile per questo di essere fatto comodamente.

Attualmente la mia soluzione è l'utilizzo di :set cinoptions=(1 che aggiunge solo un'unità di allineamento all'avvio di una linea di continuazione. In questo modo, posso essere sicuro che l'allineamento aggiunto è uno spazio (a patto che non lo sia stato :set ts=1, almeno) e aggiungere manualmente la bella quantità di spazi. Questo è ancora ok in termini di velocità e sembra essere il minimo fattore di distrazione per me!

+0

È possibile contrassegnare la propria risposta come accettata! –

3

In aggiunta al tuo: set cino = (1, potresti anche essere interessato alle opzioni 'preserveindent' e 'copyindent' se non li hai già incontrati. Non risolvono completamente il tuo problema, ma

+0

Sì, li ho incontrati. Ma peccato che ci siano ancora molte più regole che calcolano tutte le rientranze e rientro con tabulazioni/spazi misti ... –

Problemi correlati