2011-04-18 12 views
6

Negli ultimi giorni mi sono sforzato di passare da Textmate a Vim. per la maggior parte, la mia efficienza è praticamente la stessa dopo alcune pesanti configurazioni di Vim. un aspetto del mio flusso di lavoro non ho trovato un sostituto è il trascinamento di file in Textmate, dove le immagini sarebbero trasformate in tag img e file sarebbero trasformati in richieste di chiamate.posizionamento immagine vim

Come è possibile creare dinamicamente un tag immagine e un'istruzione include/require?

+0

correlati: http://stackoverflow.com/questions/1693389/vim-browser-plugin-to-execute-commands-on-files/1696072#1696072 –

risposta

7

Ho pensato a quell'edificio automatico <img> dal passaggio.

Vim ha una soluzione integrata per una parte del problema: il motore di omni-completamento consente di completare il percorso di un file che si desidera includere.

Se si inizia a digitare una stringa "simile a un percorso" - ad esempio <img src="images/ - premere <C-x><C-f> per un piccolo elenco di possibili completamenti. Accoppiato con un plug-in di completamento automatico come ACP e snipMate, il processo è molto veloce.

Ma non aiuta affatto per width e height.

Una possibile soluzione potrebbe essere quella di utilizzare per la snipMate <img> frammento, utilizzare <C-x><C-f> per il percorso dell'immagine, catturare il percorso e mangimi per qualche linea di comando, riempire le width e height attributi con la sua uscita.

EDIT

Si scopre altri hanno già esplorato una strada simile, this script è interessante ma non funziona correttamente con i percorsi dei file contenenti spazi. Here is a slightly modified version che funziona abbastanza bene. This other one sembra essere molto bello ma manca un pezzo cruciale.

FINE EDIT

ALTRO EDIT

ho aggiunto questo frammento di ~/.vim/bundle/snipMate/snippets/html.snippets (attenzione il trattino prima $ è un <Tab>):

snippet img custom 
    ${1:`HTML_insertImg()`} 

che funziona bene ma antepone l'uscita del HTML_insertImg() con un 0 come questo:

0<img src="future_timeline.png" width="612" height="6370" alt="" /> 

Questo 0 è un po 'un problema però. Il sistema non è ovviamente perfetto ma una volta che mi libererò di questo fastidioso 0 si adatterà piuttosto bene nel resto del mio processo basato sul snipMate.

A proposito, here is a second modified version dello script che utilizzo.

FINE UN ALTRO EDIT

estende per 12" RE-EDIT VERSION

Con:

è possibile:

  • aperta NERDTree, selezionare un'immagine e premere b di avere una quasi completa <img src="imagename.jpg" width="128" height="256" alt="" /> etichetta incollata alla posizione del cursore nella finestra precedente
  • o, se il sapore Vim lo permette, digitare :IMG<CR> per aprire una finestra di selezione file nativa, scegliere un'immagine e avere un tag <img src="imagename.jpg" width="128" height="256" alt="" /> quasi completo incollato nella posizione corrente nella finestra corrente
  • oppure, se si è in un terminale, digitare per avere unoquasi completo Tagincollato nella posizione corrente nella finestra corrente

La soluzione snipMate non è realmente pronta al momento.

Grazie a Petr Mach e allo @Matteo Riva per la maggior parte del lavoro.

E sì, ovviamente non sono un esperto di Vim.

estremità estesa 12" RE-EDIT VERSION

+0

grazie per il suggerimento di completamento automatico, davvero bello ma, le dimensioni sono più difficili da ottenere rispetto ai nomi dei file. che è quello che sto cercando. –

+0

@matt ryan, sono ancora un Vim noob me stesso. In realtà, trovare una soluzione per questo è stato nella mia lista TODO da mesi, ho bisogno di rispolverare le mie abilità regex (non), penso. – romainl

+0

nel frattempo sto usando il pacchetto di identificazione in questo modo: $ identify -format "width = \ "% w \" height = \ "% h \" "background.png | pbcopy –