2011-01-11 20 views
13

Quando mi trovo in un file html.erb, non ottengo frammenti di snipMate.Vim html.erb snippet ?? snipMate Need a vim tip

Vorrei che sia HTML che Ruby, o solo HTML andrebbero bene, Come farei questo?

Devo scrivere un set di frammenti?

In tal caso, esiste un modo per inserire gli snippet esistenti senza copiarli?

C'è un modo per dire a vim di andare in modalità html quando vede .html erb?

risposta

12

I frammenti vengono memorizzati nella directory denominata snippets da qualche parte nella cartella ~/.vim.

Se guardi lì, di solito c'è un file per tipo di file, c'è un c.snippets, un ruby.snippet, quindi sembra che quello che devi fare è creare un erb.snippet lì con quello che vuoi.

Eventualmente è possibile copiare il contenuto di ruby.snippets e html.snippets nei nuovi erb.snippet.

In alternativa è possibile cercare su github, alcune persone hanno pubblicato la propria configurazione erb.snippets. Per esempio, c'è una bella collezione ci: https://github.com/scrooloose/snipmate-snippets

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

+0

Grazie di cuore ... le rotaie erb mancano di tag html quindi mi limiterò a copiare em in! Grazie. –

+0

come hai fatto a farlo funzionare? Ho aggiunto erb.snippet alla cartella snippet e aggiunto alcuni frammenti, ma continua dicendo "Pattern not found" mentre snipmate funziona perfettamente con .c .rb e altri file supportati da nativi. – Sergey

+0

Sembra che debba essere refactored anche se https://github.com/scrooloose/snipmate-snippets/blob/master/ruby-rails/defcreate.snippet. Preferisco usare respond_with quindi sto lavorando su alcuni nuovi frammenti. – kgpdeveloper

17

È possibile utilizzare un autocmd per impostare il tipo di file su html quando si apre un file ".html.erb". Questo potrebbe avere effetti collaterali indesiderati per plugin che funzionano con file ".erb".

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

È inoltre possibile caricare più di una serie di frammenti utilizzando un tipo di file tratteggiata:

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

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

+0

prestare attenzione a questo. La sintassi altamente interessante è incasinata: https://dl.dropbox.com/u/750013/SS_2012-11-01_21%3A27%3A41.png. – robertokl

3

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

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

Gli ultimi due parentesi angolari sarebbero evidenziati in rosso, il che mi ha spinto fuori di testa. Così, ho creato un link simbolico chiamato eruby.snippets che punta a html.snippets. Ha funzionato come un campione e ora non devo apportare modifiche in due punti. Ho anche una directory snippet di eruby-rails per snippet di eruby non html.

Si tratta di un sistema Mac OS X. Nota che un alias non funzionerà. Devi colpire il terminale e usare il comando ln. Non sono sicuro di farlo su un sistema Windoze.

8

Sono attualmente in un tour promozionale per UltiSnips su StackOverflow. UltiSnips supporta estendendo altri tipi di file, i tuoi erb.snippets sarebbe simile a questa: lo script

extends html, ruby, rails 

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

una conversione per frammenti snipMate viene fornita con UltiSnips, per cui il passaggio è facile.

+0

Quindi, perché non includere solo quello che estende la linea negli ultisnips per eruby? –

+1

Non so nulla di rubino, di eruby, di erb o di qualsiasi altra documentazione in codice html o web. Quindi, devo fare affidamento sugli utenti che forniscono utili definizioni di frammenti e file .snippet qui. Sentiti libero di inviare una patch. – SirVer

2

È possibile assegnare più ambiti di snippet a un singolo tipo di file. (Ho scoperto che alterare il tipo di file tende a interrompere l'evidenziazione della sintassi).

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

:set filetype? 

Se si utilizza il maintained fork of snipmate, sembra che si vorrà entrambe le eruby.snippets e eruby- rails.snippets dal repository snipmate-snippets (di proprietà di honza, ma non ho abbastanza reputazione per collegarlo qui) (consultare la sezione INSTALL del README dello snipmate per un'installazione corretta).

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 pull request per snipmate di avere la loro documentazione aggiornata.

1

Saltare sul carrozzone UltiSnips dopo aver provato SnipMate per un po '. Come menzionato SirVer, avere gli snippet html, ruby, etc disponibili all'interno di un file *.erb era semplice come aggiungere la riga di estensione al file eruby.snippets.

0

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)