2010-06-25 7 views
5

Я видел магические команды Vim, прежде чем вы сможете добавить к своему .vimrc, чтобы иметь складки, созданные при открытии определенного типа файла. Я помню, что у меня был такой код, который создавал бы складки при открытии файла при каждом методе и классе Ruby. Затем, с одной командой, я могу свернуть все эти складки метода. Кто-нибудь знает, как это сделать со встроенными представлениями в PL/SQL? Скажем, у меня есть следующий SQL:auto-fold Oracle inline views в Vim с использованием .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 

Я хотел бы сгибы быть созданы, когда я открываю это в Vim, так что я могу пойти на FROM ( линии, ударил zc в командном режиме, и иметь вложенное представление, начиная с эта линия будет свернута. Было бы неплохо свернуть все складки одной командой.

ответ

3

Складные на основе синтаксиса активируется установка foldmethod к syntax:

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

Складывание должно затем быть указано в определении синтаксиса, который делается путем предоставления fold аргумента в регионы, которые должны увеличить уровень сгиба , Процитирую документацию:

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. 

Таким образом, вы должны пойти в файлы синтаксиса для любых типов файлов, которые вам небезразличны, и добавьте fold аргумент в соответствующих регионах, или потенциально добавить в своих регионах. В вашем случае это похоже на то, что он довольно похож на синтаксис синтаксиса C/C++, за исключением скобок.

Файлы синтаксиса по умолчанию обычно хранятся в /usr/share/vim/vimXX/syntax на Linux (и предположительно <vim-directory>\vimXX\syntax на окнах?), Где XX - номер версии без периода (например, 72). Они могут быть переопределены общесистемными файлами в /usr/share/vim/vimfiles/syntax или для каждого пользователя по файлам в ~/.vim/syntax.

+0

Я попробовал добавить складки, где начало и конец являются только скобками, но это не работает, потому что в SQL-файле используется много других вещей, например, 'MAX (bar)'. Установка 'start =" FROM ("' тоже не работает, он не обнаружил складки. –

0

Я бы предложил просто избежать многоуровневых SQL-запросов. Вы всегда можете создать представление, временную таблицу. Я знаю, что это противоречит теории Тома Ките, но это 10-летняя практика PL/SQL. Разделите сложную программу на несколько более простых частей . Разделите сложные SQL-запросы на простые запросы.

В вашем примере запрос довольно легко понять, сгибание будет только мешать.

Наоборот, для вложенных процедур PL/SQL складные работы весьма полезны. На vim.org есть сценарий для VIM.

Смежные вопросы