Come auto-formattare e auto-capitalizzare SQL in Vim

1

Mi piacerebbe usare vim per scrivere query SQL, ma non ho capito come ottenere due funzionalità chiave che uso sempre in programmi come SQL Yog.

Di solito avvio un'istanza di Yog in background, taglia e incolla il mio SQL al suo interno, premo F12 che auto-formatta l'intera cosa. Tutte le parole chiave SQL vengono automaticamente in maiuscolo non appena il testo viene incollato. Quindi lo copio in qualsiasi altro strumento che sto usando (spesso SQL Query Browser al lavoro) e vado da lì. I vantaggi di queste due funzionalità meritano uno sforzo extra.

Qualcuno sa come posso impostare vim per fare questo? Potrei avere ancora bisogno di tagliare e incollare di nuovo in Query Browser, che è accettabile per me, ma mi piacerebbe rimanere con Vim per tutte le mie modifiche.

    
posta dvanaria 19.04.2011 - 17:12
fonte

2 risposte

1

Potresti inserire alcuni autocmd s per i file SQL in .vimrc che eseguono un gruppo di comandi :ab per sostituire automaticamente le parole chiave comuni con le loro varianti in maiuscolo.

Se vai oltre, puoi anche scrivere il tuo script di indentazione e collegarlo a indentexpr .

Se hai bisogno di farlo in linea in un altro tipo di file (ad esempio, stai scrivendo query SQL in stringhe, ad esempio in PHP), probabilmente dovrai comunque farlo in un buffer di lavoro o modificare la lingua ftplugin per utilizzare il indentexpr in una "modalità SQL".

    
risposta data 19.04.2011 - 17:54
fonte
1

Ho appena inserito questa mappa nel mio .vimrc:

" prettify sql:
vnoremap <Leader>rp :s/\<update\>\|\<select\>\|\<from\>\|\<where>\|\<left join\>\|\<inner join\>\|\<group by\>\|\<order by\>/\r\U&/ge<cr><esc>

L'ho mappato rp - ma scelgo quello che vuoi. (rp = run prettify)

Il modo di usarlo è selezionare visivamente la query (ad es. * testo sottolineato * con

vip 

o qualsiasi altra cosa, quindi premi J per unire la tua query in un'unica riga, quindi esegui questa mappa.

    
risposta data 03.01.2013 - 12:13
fonte

Leggi altre domande sui tag