2010-06-25 2 views
5

Ho visto magici comandi Vim prima di poter aggiungere a .vimrc le piegature create all'apertura di un particolare tipo di file. Ricordo di avere un tale codice che creasse le pieghe, aprendo il file, ad ogni metodo e classe di Ruby. Quindi, con un solo comando, potrei comprimere tutte quelle pieghe del metodo. Qualcuno sa come farlo con le viste inline in PL/SQL? Dire che ho il seguente SQL:ripiegamento automatico di Oracle viste in linea in Vim utilizzando .vimrc

SELECT blah, 
     teh_max 
FROM (
     SELECT blah, 
       MAX(bar) AS teh_max 
     FROM (
       SELECT blah, 
        bar 
       FROM foo 
      ) 
     GROUP BY blah 
    ) 
ORDER BY blah 

Vorrei pieghe da creare quando apro questo in Vim in modo che io possa andare a una linea FROM (, ha colpito zc in modalità di comando, e hanno la vista in linea a partire da quella linea essere crollata. Sarebbe bello poter piegare tutte le pieghe con un solo comando.

risposta

3

retraibile basati su sintassi viene attivata impostando foldmethod a syntax:

" for all windows 
set foldmethod=syntax 
" for the current window 
setlocal foldmethod=syntax 

La piegatura deve quindi essere specificato nella definizione della sintassi, che viene fatto fornendo l'argomento fold alle regioni che dovrebbe aumentare il livello di piegatura . Per citare la documentazione:

The "fold" argument makes the fold level increase by one for this item. 
Example: 
    :syn region myFold start="{" end="}" transparent fold 
    :syn sync fromstart 
    :set foldmethod=syntax 
This will make each {} block form one fold. 

quindi dovrete andare nelle file di sintassi per qualsiasi tipi di file che ti interessano, e aggiungere l'argomento fold alle regioni appropriate, o potenzialmente aggiungere nelle proprie regioni. Nel tuo caso, sembra che sia abbastanza simile alle parentesi graffe della sintassi di C/C++, ad eccezione delle parentesi.

I file di sintassi predefiniti sono generalmente mantenuti in /usr/share/vim/vimXX/syntax su Linux (e presumibilmente <vim-directory>\vimXX\syntax su Windows?) Dove XX è il numero di versione senza periodo (ad esempio 72). Questi possono essere sovrascritti a livello di sistema da file in /usr/share/vim/vimfiles/syntax o per utente da file in ~/.vim/syntax.

+0

Ho provato ad aggiungere pieghe in cui l'inizio e la fine sono solo parentesi, ma ciò non funziona perché molte altre cose in SQL usano le parentesi, ad esempio 'MAX (bar)'. Impostando 'start =" FROM ("' non ha funzionato neanche: non ha riconosciuto una piega lì. –

0

Suggerisco solo di evitare query SQL multilivello. Puoi sempre creare una vista, una tabella temporanea. So che è in contraddizione con la teoria di Tom Kyte, ma è la pratica PL/SQL di 10 anni. Dividere il programma complesso in più parti semplici . Dividi le query SQL complesse in semplici query.

Nel tuo esempio, la query è abbastanza facile da comprendere, la piegatura potrebbe solo disturbare.

Al contrario per le procedure PL/SQL nidificate, la piegatura funziona in modo abbastanza utile. C'è uno script per VIM su vim.org.