2010-06-25 24 views
5

J'ai vu des commandes Vim magiques avant que vous pourriez ajouter à votre fichier .vimrc pour avoir des plis créés lors de l'ouverture d'un type particulier de fichier. Je me souviens d'avoir un tel code qui créerait les plis, lors de l'ouverture du fichier, à chaque méthode et classe Ruby. Ensuite, avec une commande, je pourrais réduire tous ces plis de méthode. Est-ce que quelqu'un sait comment faire cela avec des vues en ligne dans PL/SQL? Dire que j'ai l'instruction SQL suivante:auto-fold Oracle vues en ligne dans Vim en utilisant .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 

je voudrais plis à créer quand j'ouvrir ce dans vim pour que je puisse aller à une ligne FROM (, appuyez sur zc en mode commande, et avoir la vue en ligne à partir de cette ligne soit effondrée. Ce serait bien de réduire tous les plis avec une seule commande.

Répondre

3

se pliant basé sur la syntaxe est activée par la mise en foldmethod-syntax:

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

Le pliage doit alors être spécifié dans la définition de la syntaxe, qui est fait en fournissant l'argument fold aux régions qui devrait augmenter le niveau de pliage . Pour citer la documentation:

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. 

donc vous devez aller dans les fichiers de syntaxe pour quels que soient les types de fichiers que vous aimez, et ajoutez l'argument fold aux régions appropriées, ou potentiellement ajouter dans vos propres régions. Dans votre cas, il semble que ce soit assez semblable aux accolades de la syntaxe C/C++, sauf avec des parenthèses.

Les fichiers de syntaxe par défaut sont généralement conservés dans /usr/share/vim/vimXX/syntax sous Linux (et vraisemblablement <vim-directory>\vimXX\syntax sous Windows?) Où XX est le numéro de version sans la période (par exemple 72). Ceux-ci peuvent être remplacés à l'échelle du système par des fichiers au /usr/share/vim/vimfiles/syntax ou par utilisateur par des fichiers au ~/.vim/syntax.

+0

J'ai essayé d'ajouter des plis où le début et la fin ne sont que des parenthèses mais cela ne fonctionne pas parce que beaucoup d'autres choses dans SQL utilisent des parenthèses, par exemple, 'MAX (bar)'. Définir 'start =" FROM ("' n'a pas fonctionné non plus, il n'a pas reconnu de pli. –

0

Je suggère simplement d'éviter les requêtes SQL multiniveaux. Vous pouvez toujours créer une vue, une table temporaire. Je sais que cela contredit la théorie de Tom Kyte, mais c'est la pratique PL/SQL de 10 ans. Divisez le programme complexe en plusieurs parties plus simples. Divisez les requêtes SQL complexes en requêtes simples.

Dans votre exemple, la requête est assez facile à saisir, le pliage ne peut que perturber. Par contre, pour les procédures PL/SQL imbriquées, le pliage fonctionne très utilement. Il y a un script pour VIM sur vim.org.