2011-11-09 7 views
10

Sono sicuro che abbiamo tutti familiarità con il problema "KEnd inaspettato". Sono sempre (per me) un sacco di problemi da rintracciare, perché Vim non corrisponde a "do" e "fine". (E, ovviamente, altri elementi che terminano con "fine", come "if")Vim e Ruby - corrispondenti a "do" e "fine"?

C'è un modo per configurare Vim per mostrare queste corrispondenze per facilitare il debugging?

+0

Un indentazione adeguata potrebbe essere d'aiuto. – sidyll

+3

Aiuta e tutti i miei file sono perfettamente rientrati. Non è di grande aiuto, però, specialmente se un rientro annidato inizia ad essere terribilmente profondo ... (e quando il problema non era un rientro improprio, ma il fatto che all'inizio del blocco non ti fossi messo in pratica) – GlyphGryph

+0

Usa [Syntastic] (https://github.com/scrooloose/syntastic). – Hauleth

risposta

5

Io uso this macro e quindi aggiungere questo al mio vimrc per attivarlo:

" % to bounce from do to end etc. 
runtime! macros/matchit.vim 

Quando voglio trovare la fine di corrispondenza per un fai, mi cursore sopra il fare e ha colpito%.

+0

Hmm ... mentre questo è esattamente ciò che sto cercando per descrizione, in realtà non sembra funzionare /. Salta semplicemente all'inizio della linea. Strano. No, aspetta ... ah, funziona per ifs, e funziona andando/indietro/da "fine", ma non riesco a farlo funzionare in avanti da "fai". – GlyphGryph

+0

In realtà, sembra che non corrisponda affatto alla sintassi ruby, ma corrisponde solo ai livelli di rientro. Dato che uso foldmethod = indent, questo è ... abbastanza inutile. Certamente non mi aiuta a rintracciare i bug. Scusa, è una buona idea, ma questa implementazione è decisamente carente. :/ – GlyphGryph

+0

Funziona per me in tutti i casi con i quali stai segnalando problemi. È possibile che abbia preso la mia macro da una fonte diversa - fammi vedere se riesco a rintracciarla. –

4

"endwise" è un'estensione vim molto carina che li aggiunge automaticamente, che ho trovato riduce enormemente la quantità di mancante end s. ecc:

http://www.vim.org/scripts/script.php?script_id=2386

+1

Lo uso anch'io, ma ogni tanto dimentico che è già stato aggiunto e lo aggiungo io stesso. Poi mi sono perso in un mare di fine-do, che è il luogo in cui entra il matchit. –

-2

Io uso this matchit clone, che può essere installato facilmente con vundle.

12

Se si utilizza un vim recente (sto usando 7.4), la macro matchit incorporata funziona bene con il codice ruby.

Abilitarlo aggiungendo quanto segue al Vimrc

runtime macros/matchit.vim 

Hit% per abbinare fare/combo finali e molti altri in file rubino.