2009-02-11 8 views
13

Questo mi ha infastidito per molto tempo, e provo come potrei io non riesco a trovare un modo per aggirarlo.Come evitare che il rientro di Vim avvolga il testo tra parentesi

Quando sto modificando i file di testo (in particolare in lattice, ma non importa), voglio che si completi automaticamente con 80 colonne. Lo fa, a meno che non sia nel bel mezzo di una clausola parentetica, indenta il testo che è molto fastidioso. Ad esempio, questo funziona bene

Here is some text... over 
two lines. 

ma questo non

Here is some text... (over 
         two 
         lines 

fa Se qualcuno può dirmi come attivare questa via (solo per i file di testo/lattice) sarei davvero grato. Presumibilmente ha qualcosa a che fare con il fatto che questo è il comportamento desiderato in C, ma non riesco ancora a capire cosa c'è che non va.

risposta

12
:set nocindent 

Le altre opzioni non fare nulla, e la rilevazione tipo di file non cambia esso.

1

: set noai

set senza auto trattino tt possono essere smartindent però. Controlla la doc e vedere se è possibile trovare qualcosa di più

http://www.vim.org/htmldoc/indent.html

+0

No. Nessuna differenza. – Draemon

+0

Divertente, questo è stato l'unico che ha funzionato per me, ': set nocindent' non ha fatto nulla nel mio caso. – FvD

3

Si può avere uno sguardo alla possibilità autoindent:

autoindent - AI

Copia rientro dalla linea di corrente quando iniziare una nuova riga (digitando in modalità Inserisci o quando si utilizza il comando "o" o "O"). Se non si digita nella nuova riga tranne e quindi si digita o , il rientro viene eliminato nuovamente. Quando la funzione Autoindent è attiva, la formattazione (con il comando "gq" o quando si raggiunge "textwidth" nella modalità di inserimento ) utilizza il rientro della prima riga. Quando "smartindent" o "cindent" è sul trattino, viene modificato in specifici casi . L'opzione 'autoindent' viene ripristinata quando l'opzione 'paste' è impostata su . {piccola differenza da Vi: dopo che il rientro è stato cancellato quando digitava o, la posizione del cursore quando si sposta su o giù è dopo il rientro cancellato; Vi mette il cursore da qualche parte nel rientro cancellato }.

+2

Ah. Cindent sembra essere il colpevole. Avevo provato autoindent e smartindent ma non facevano differenza. Qual è il modo migliore per impostare questo per file di testo/in lattice? – Draemon

+1

guarda la mia altra risposta, penso che avrai la soluzione con il rientro del tipo di file. – claf

5

Ci sono tre opzioni che potrebbe essere necessario disattivare: imposta noai, imposta nosi e setnocin (autoindent, smartindent e cindent).

2

Dalla ufficiale Vim documentation

filetype plug trattino sulla

Questo permette di attivare tre molto intelligenti meccanismi:

  1. rilevamento Filetype. Ogni volta che inizi a modificare un file, Vim proverà a capire che tipo di file è questo . Quando si modifica "main.c", Vim sarà vedere l'estensione ".c" e
    riconoscerlo come un tipo di file "c". Quando si modifica un file che inizia con "#!/ Bin/sh", Vim lo riconoscerà come un "filetype sh" La rilevazione filetype viene utilizzato per la sintassi evidenziazione e gli altri due
    elementi di seguito Vedere |.. Tipi di file |.

  2. Utilizzando filetype plugin file Molti tipi di file diversi vengono modificati con diverse opzioni. per esempio,
    quando si modifica un file "c", è molto utile per impostare l'opzione 'cindent' per rientrare automaticamente le linee. Queste impostazioni delle opzioni comunemente utili sono
    incluso con Vim nei plugin di tipo file. È anche possibile aggiungerne uno, vedere
    | plugin-filetype-scrittura |.

  3. Uso dei file di rientro Quando si modificano i programmi, il rientro di una riga può essere calcolato automaticamente. Vim viene fornito con queste regole di rientro per un numero di tipi di file. Vedi |: filetype-indent-on | e "indentexpr".

+0

Ce l'ho già. Non sembra cambiare il cindent – Draemon

+0

Penso che dovresti provare a cercare un plugin di tipo file scritto da qualcuno con lo stesso problema per i file in lattice, o forse potresti provare a scriverne uno. – claf

+0

ah, ok. Darei uno sguardo a quello in lattice e vedere se è facile modificare – Draemon

3

Questo può essere correlato, quando si incolla da gui nella finestra del terminale, vim non può distinguere i modi di pasta, in modo per fermare eventuali cose strane dall'occuring:

set paste 

quindi incollare il testo

set nopaste 

I ha avuto problemi simili cercando di incollare il testo xml, avrebbe continuato a rientrare. :)

gvim, la versione gui di vim, in grado di rilevare le modalità di incolla.

+0

per i booleani usare a! per attivare. in questo modo puoi usare la cronologia dei comandi:: set paste! :

+0

Questo era il problema che stavo avendo. Grazie! – HaskellElephant

Problemi correlati