2010-08-05 12 views
29

In uno degli editor basati su Eclipse che ho provato di recente (penso fosse RubyMine), quando una parola chiave Ruby che ha aperto o chiuso un metodo o blocco è stato selezionato, la corrispondente parola chiave aperta/chiusa è stata evidenziata. Simile al modo in cui Vim è in grado di evidenziare una parentesi aperta/chiusa corrispondente.Vim: Evidenzia le coppie di parole chiave in Ruby (def/end, do/end, ecc.)

Ad esempio, se si seleziona "def", si evidenzia la "fine" corrispondente. Ha funzionato anche per blocchi di fine corsa.

Questo è stato davvero utile, specialmente per quei file Rspec lunghi ea volte pesantemente annidati.

Qualcuno sa come ottenere ciò a Vim?

+2

Dai un'occhiata a ruby-matchit.vim - che ti permette di rimbalzare tra 'def' ...' end' e 'class'..'end' e compagnia usando'% '. La logica dovrebbe essere la stessa per quello che vuoi. http://vim.sourceforge.net/scripts/script.php?script_id=290 – Telemachus

+1

Un altro utile plugin Vim per 'x' ...' end' pairs è 'endwise' di Tim Pope, che inserirà automaticamente un' end' ogni volta che si avvia una sezione che ne richiede una: http://github.com/tpope/vim-endwise – Telemachus

+0

Grazie per i commenti Telemaco. Questi non sono esattamente quello che sto cercando, ma comunque utile. ruby-matchit può servire allo stesso scopo, ma preferirei l'evidenziazione come descritto nella mia domanda, se possibile. Una volta che ho imparato di più su Vim, posso indagare se è possibile implementare me stesso. – pakeha

risposta

2

Sembra che questo plug-in vim esegua il paren-matching: http://vimdoc.sourceforge.net/htmldoc/pi_paren.html si potrebbe probabilmente scavare in quel codice per vedere come estenderlo all'abbinamento con altre cose.

+1

non funzionerà dato che ': help matchpairs' dice: Attualmente sono permesse solo coppie di caratteri a singolo byte, e devono essere diversi. –

+0

Sì, si dice al momento ... ma il codice darà un'idea di come eseguire il paren-matching, e quindi è possibile estenderlo in modo che supporti coppie multi-char sì? È un punto di partenza :) –

8

VIM (fino a 7.2) non può evidenziare una coppia di chiusura 'se/fine' poiché le impostazioni di corrispondenza accettano un singolo carattere (vedere: help matchpairs). Mi consiglia di utilizzare pieghevole, invece, a condizione che si rientra con precisione il codice:

:set foldmethod=indent 

Quindi utilizzare: zc, za per assicurarsi che sei nel blocco a destra.

17

Se si utilizza Vim 7.3, è necessario disporre della macro MatchIt vim disponibile.

Aggiungi runtime macros/matchit.vim al tuo file .vimrc e dovresti essere in grado di utilizzare% per abbinare i blocchi rubino.

Puoi vedere il plug-in del tipo di file per ruby ​​per vedere come si muoverà.

+0

Perfetto! Funziona molto meglio di ': set foldmethod = indent' e' zc' +1 –

1

Ho trovato questo plugin durante la ricerca per la risposta sullo stesso problema che funziona per codice Ruby di base, ma non ho provarlo per Rspec ecc

Basta installarlo tramite pathogen e aggiungere let g:hl_matchit_enable_on_vim_startup = 1

https://github.com/vimtaku/hl_matchit.vim

Problemi correlati