2010-06-25 18 views
5

He visto comandos Vim mágicos antes de que pudiera agregar a su .vimrc los pliegues creados al abrir un tipo particular de archivo. Recuerdo tener ese código que crearía los pliegues, al abrir el archivo, en cada método y clase de Ruby. Entonces, con un comando, podría colapsar todos los pliegues del método. ¿Alguien sabe cómo hacer esto con vistas en línea en PL/SQL? Decir que tengo el siguiente código SQL:plegar automáticamente las vistas en línea de Oracle en Vim usando .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 

me gustaría pliegues que se crean cuando abro esto en Vim para que yo pueda ir a una línea FROM (, golpeó zc en modo comando, y tienen la vista en línea a partir de las esa línea se colapsará. Sería bueno colapsar todos los pliegues con un comando, también.

Respuesta

3

abatible basa en la sintaxis se activa ajustando foldmethod-syntax:

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

El plegado debe entonces ser especificado dentro de la definición de sintaxis, que se realiza proporcionando el argumento fold a regiones que debería aumentar el nivel de pliegue . Para citar la documentación:

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. 

por lo que tendrá que entrar en los archivos de sintaxis para cualquier tipo de archivos que le interesan, y añadir el argumento fold a las regiones apropiadas, o potencialmente añadir en sus propias regiones. En su caso, parece que es bastante similar a la sintaxis de C/C++ fold-by-braces, excepto con paréntesis.

Los archivos de sintaxis predeterminados generalmente se guardan en /usr/share/vim/vimXX/syntax en Linux (y presumiblemente <vim-directory>\vimXX\syntax en windows?) Donde XX es el número de versión sin el período (por ejemplo, 72). Estos pueden ser anulados en todo el sistema por archivos en /usr/share/vim/vimfiles/syntax o por usuario por archivos en ~/.vim/syntax.

+0

Intenté agregar pliegues donde el inicio y el final son solo paréntesis pero eso no funciona porque muchas otras cosas en SQL usan paréntesis, por ejemplo, 'MAX (bar)'. Establecer 'start =" FROM ("' tampoco funcionó, no reconoció un fold allí. –

0

Sugeriría simplemente evitar las consultas SQL multinivel. Siempre puedes crear una vista, una tabla temporal. Sé que eso contradice la teoría de Tom Kyte, pero es la práctica PL/SQL de 10 años. Divida el programa complejo en varias partes más simples . Divida las consultas SQL complejas en consultas simples.

En su ejemplo, la consulta es bastante fácil de entender, el plegado solo molestaría.

En el lado opuesto para procedimientos PL/SQL anidados, el plegado funciona bastante útilmente. Hay un script para VIM en vim.org.

Cuestiones relacionadas