我之前看到了神奇的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
,并从该行开始的内联视图是崩溃了。用一个命令折叠所有折叠也不错。
答案 0 :(得分: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 ++语法的逐字括号非常相似。
默认语法文件通常保存在Linux上的/usr/share/vim/vimXX/syntax
(在Windows上可能是<vim-directory>\vimXX\syntax
),其中XX是没有句点的版本号(例如72)。这些可能会被/usr/share/vim/vimfiles/syntax
中的文件或~/.vim/syntax
中的文件中的每个用户覆盖在系统范围内。
答案 1 :(得分:0)
我建议只是为了避免多级SQL查询。您始终可以创建视图,临时表。我知道这与Tom Kyte的理论相矛盾,但是 这是10年的PL / SQL实践。将复杂程序划分为几个更简单的程序 部分。将复杂的SQL查询划分为简单的查询。
在您的示例中,查询很容易掌握,折叠只会打扰。
与嵌套的PL / SQL程序相反,折叠工作非常有用。 vim.org上有一个VIM脚本。