Domanda

Quando sono in un file html.erb, non ottengo frammenti snipMate.

vorrei sia HTML e Ruby, o semplicemente HTML andrebbe bene, Come faccio a fare questo?

avrei bisogno di scrivere una serie di frammenti?

Se è così, c'è un modo di tirare in frammenti esistenti senza copiarli?

C'è un modo di dire vim per entrare in modalità HTML quando si vede erb .html?

È stato utile?

Soluzione

Frammenti vengono memorizzati nella directory chiamata snippets da qualche parte nella cartella ~/.vim.

Se si guarda là, di solito c'è un file per tipo di file, c'è un c.snippets, un ruby.snippets, così sembra quello che devi fare è creare un erb.snippets lì con quello che vuoi.

Alla fine si potrebbe copiare il contenuto di ruby.snippets e html.snippets nel nuovo erb.snippets.

In alternativa è possibile cercare su GitHub, alcune persone hanno inviato la propria configurazione erb.snippets. Ad esempio, v'è una raccolta bello lì: https://github.com/scrooloose/snipmate-snippets

La cosa migliore sarebbe di cercare prima di aprire un file snippet e guardare la sintassi, è abbastanza facile da creare il proprio frammento di seconda di ciò che si utilizza di più.

Altri suggerimenti

È possibile utilizzare un autocmd per impostare il tipo di file in HTML quando si apre un file ".html.erb". Ciò potrebbe avere effetti collaterali indesiderati per i plugin che il lavoro per i file ".erb".

autocmd BufNewFile,BufRead *.html.erb set filetype=html

È anche possibile caricare più di un insieme di frammenti, utilizzando un tipo di file tratteggiata:

autocmd BufNewFile,BufRead *.html.erb set filetype=html.eruby

Vedere :help snippet-syntax nella Guida snipMate per maggiori informazioni.

Sono attualmente in un tour promotore per UltiSnips su StackOverflow. supporti UltiSnips estendono altri tipi di file, i tuoi erb.snippets sarebbe simile a questa:

extends html, ruby, rails

snippet temp "A snippet only in Erb"
erb rules ${1}
endsnippet

Uno script di conversione per i frammenti snipMate viene fornita con UltiSnips, per cui il passaggio è facile.

Ho usato il metodo autocomando al set il tipo di file, ma poi ho avuto html sintassi errori per cose come questa:

<%= image_tag("logo.png", :alt => "Sample App", :class => "round") %>

Le ultime due parentesi angolari sarebbe evidenziato in rosso, il che mi ha spinto fuori di testa. Così, ho creato un link simbolico chiamato eruby.snippets che punta a html.snippets. Che ha funzionato come un campione e ora non c'è bisogno di apportare modifiche in due punti. Ho anche un eruby-rails snippet di directory per i non-html eruby frammenti.

Questo è su un sistema Mac OS X. Si noti che un alias non funzionerà. È necessario colpire il terminale e utilizzare il comando ln. Non sono sicuro di fare questo su un sistema di Windoze.

È possibile assegnare più frammenti ambiti a un unico tipo di file. (Ho scoperto che modificando il tipo di file tende a rompersi qualche evidenziazione della sintassi).

È possibile verificare che il tipo di file per i file erb è davvero 'eruby' con:

:set filetype?

Se si utilizza il forcella mantenuto di snipmate , sembra che si vorrà sia i eruby.snippets e eruby-rails.snippets dal repository snipmate-frammenti (di proprietà di Honza, ma non hanno abbastanza reputazione per collegamento ad esso qui) (consultare la sezione Installazione del README snipmate per verificare la configurazione).

Se si utilizza la forcella mantenuto, credo che l'impostazione g: snipMate.scope_aliases nel vostro Vimrc con la seguente lavorerà per il tuo esempio:

let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['eruby'] = 'eruby,eruby-rails'

Ho una trazione richiesta per snipmate di avere la loro documentazione aggiornata .

saltando sul carro UltiSnips dopo aver provato SnipMate per un po '. Come accennato SirVer, avendo il codice html, rubino, ecc frammenti disponibili all'interno di un file *.erb era semplice come l'aggiunta della linea di estendere al file eruby.snippets.

Con l'originale snipMate plug-in, creare un file ~/.vim/ftplugin/erb_snippets.vim e inserire il seguente in esso:

silent call ExtractSnipsFile(g:snippets_dir . 'html.snippets', &l:filetype)
silent call ExtractSnipsFile(g:snippets_dir . 'ruby.snippets', &l:filetype)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top