2010-06-25 8 views
5

.vimrc에 추가하여 특정 유형의 파일을 열 때 접힌 부분을 만들 수 있다는 마법의 Vim 명령을 보았습니다. 모든 Ruby 메서드와 클래스에서 파일을 열 때 접힌 부분을 만드는 코드를 작성한 것을 기억합니다. 그런 다음 한 명령으로 모든 메서드 폴드를 축소 할 수 있습니다. 누구든지 PL/SQL에서 인라인 뷰를 사용하여이를 수행하는 방법을 알고 있습니까? 나는 다음과 같은 SQL이 말 :.vimrc를 사용하여 Vim에서 Oracle 인라인 뷰 자동 접기

SELECT blah, 
     teh_max 
FROM (
     SELECT blah, 
       MAX(bar) AS teh_max 
     FROM (
       SELECT blah, 
        bar 
       FROM foo 
      ) 
     GROUP BY blah 
    ) 
ORDER BY blah 

나는 내가 FROM ( 라인에 갈 수 있도록 내가 빔이를 열 때 주름이 생성 싶습니다을 명령 모드에서 zc을 공격하고, 인라인 뷰에서 시작을 그 줄은 무너질거야. 하나의 명령으로 모든 폴드를 접는 것이 좋을 것입니다.

답변

3

이 문법에 기초 폴딩 설정 활성화 foldmethodsyntax 행 :

" 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++ 구문의 fold-by-braces와 매우 비슷하게 보입니다.

기본 구문 파일은 일반적으로 Linux에서는 (일반적으로 Windows에서는 <vim-directory>\vimXX\syntax?)으로 유지됩니다. 여기서 XX는 마침표가없는 버전 번호 (예 : 72)입니다. 이 파일들은 /usr/share/vim/vimfiles/syntax에있는 파일 또는 ~/.vim/syntax에있는 파일 별 사용자 별 파일로 덮어 쓸 수 있습니다.

+0

시작과 끝이 괄호 안에있는 폴드를 추가하려고 시도했지만 SQL의 다른 많은 것들이 괄호 (예 : MAX (bar))를 사용하기 때문에 작동하지 않습니다. 'start = "FROM ("''설정도하지 않았으므로 폴드를 인식하지 못했습니다. –

0

나는 다중 레벨 SQL 쿼리를 피하기 위해 제안했다. 임시 테이블 인 뷰를 항상 만들 수 있습니다. 나는 이것이 Tom Kyte의 이론과 모순된다는 것을 알고 있지만, 그것은 PL/SQL 10 년 연습입니다. 복잡한 프로그램을 더 간단한 몇 가지의 파트로 나누십시오. 복잡한 SQL 쿼리를 간단한 쿼리로 나눕니다.

예제에서 쿼리는 이해하기 쉽고 폴딩은 방해가됩니다.

중첩 된 PL/SQL 프로 시저의 경우 폴딩이 매우 유용합니다. vim.org에는 VIM 용 스크립트가 있습니다.

관련 문제