2010-09-24 2 views
26

Basta spostarsi su Vim al momento. In TextMate ho potuto formattare il codice premendo Cmd - Alt - [. Come ottengo lo stesso in Vim?Formato Codice rubino in Vim


Vedere la risposta sotto per il comando. Ho trovato anche il seguente nel mio .vimrc in modo che Vim sapesse come autoindentare Ruby.

if has("autocmd") 
    filetype indent on 
endif 

risposta

40

Vimcasts ha a useful screencast su questo argomento che si può essere interessati a

gg=G 

gg => go to start of file 
= => apply autoformatting 
G => ... to the end of file 
+0

Ho provato questo in un file rubino e ha fatto rientrare tutte le righe in modo che avessero iniziato 8 caratteri da sinistra. Ha completamente ignorato il rientro originale. – opsb

+0

Vedere la modifica nella domanda originale per la mia soluzione al problema di formattazione. – opsb

+0

Guardato il vimcast, vale la pena dare un'occhiata – opsb

0

ggVGgq riformatta l'intero file in base al tipo di file corrente

+5

Immagino che ggVG = farebbe lo stesso. –

+1

Ho provato ggVGqg e mentre il documento è stato riformattato era completamente sbagliato, ad es. la prima riga della prima definizione del metodo era bloccata alla fine della linea di definizione della classe. Non potrei avere alcun senso della formattazione. – opsb

+0

Vedere la modifica nella domanda originale per la mia soluzione al problema di formattazione. – opsb

3

Prova:

gg=G 

in modalità normale.

15

Quando vedo domande su Vim e la riformattazione e indentazione, di solito sento confusione. Ma è abbastanza facile.

Il rientro, eseguito con =, è un processo di spostamento dell'indetizzazione della linea senza inserire alcuna estremità di linea, senza avvolgimento rigido. In parole povere, le colonne iniziali delle linee selezionate possono cambiare, ma il contenuto non può.

D'altra parte, la riformattazione è completa riscrittura di un pezzo di codice selezionato. In poche parole, tutto viene cancellato e scritto di nuovo secondo le regole linguistiche definite in Vim. Facile, eh?

Il patern usuale per reindentation è di andare all'inizio del file (gg), passare alla selezione della linea (V), andare alla fine del file (G) e eseguire la reidentificazione (=).

Ecco indentazione in vim: ggVG=

riformattazione modello inizia con le stesse chiavi (ggVG), ma invece di chiave uguale, si fa gq - comando reformat Vim.

Ecco formattazione in vim: ggVGgq

questo funziona out-of-box in ogni caso Vim, anche con testo in chiaro. Solo quando Vim non comprende il linguaggio di programmazione, è necessario fornirgli le regole di formattazione corrette (in genere un gruppo di file .vim che devono passare alla struttura della directory .vim).

La riformattazione per Ruby funziona solo quando è installato il plug-in vim-ruby.

Ho dovuto pubblicare questo on my blog ;-) Non è Vim bello? È.

0

Ho rilasciato un plug-in VIM che eseguirà una formattazione più completa per i file Ruby. Oltre al rientro, fa cose come rimuovere spazio bianco in coda, e coerentemente spazi compilare dichiarazioni di metodo:

vim-autoformat-rails

0

Per piccola rientranza, provare: =}, =)

2

Se siete alla ricerca di più oltre all'indentazione, dai uno sguardo allo ruby-beautify. Può essere integrato con vim tramite vim-autoformat.