автоматически сворачивать встроенные представления Oracle в Vim с помощью .vimrc - PullRequest
5 голосов
/ 25 июня 2010

До этого я видел магические команды Vim, которые вы можете добавить в свой .vimrc для создания складок при открытии файла определенного типа.Я помню, что имел такой код, который создавал бы сгибы при открытии файла в каждом методе и классе Ruby.Затем, с помощью одной команды, я могу свернуть все эти сгибы метода.Кто-нибудь знает, как это сделать с помощью встроенных представлений в PL / SQL?Скажем, у меня есть следующий SQL:

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 в командном режиме ииметь встроенный вид, начинающийся с этой строки, свернутым.Было бы неплохо свернуть все складки одной командой.

Ответы [ 2 ]

3 голосов
/ 25 июня 2010

Складывание на основе синтаксиса активируется установкой 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 в Windows?), Где XX - номер версии без точки (например, 72). Они могут быть переопределены для всей системы файлами в /usr/share/vim/vimfiles/syntax или для каждого пользователя файлами в ~/.vim/syntax.

0 голосов
/ 03 октября 2017

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

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

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

...