Vim에서 코드 접기를 활성화하고 사용하는 방법은 무엇입니까?


48

Vim에서 코드 폴딩을 어떻게 활성화하고 수행 할 수 있습니까?

무엇을 바꿔야 ~/.vimrc합니까?

나는 z+ az+ cz+를 입력 o하고 아무 일도 일어나지 않습니다.

다음은 접기에 관한 기사 입니다. Vim의 코드 접기 .

답변:


40

에 연결된 페이지에서 명령을 입력하지 않아도 됩니다. 명령 프롬프트 를 표시 하기 위해 ~/.vimrc발행 한 후 입력하면 됩니다.:vim

그러나 줄을 넣으면 :

set foldmethod=indent   
set foldnestmax=10
set nofoldenable
set foldlevel=2

에서 제공 한 링크에 표시된대로 ~/.vimrc파일에서 접기를 사용하려고 할 때마다 입력하지 않아도됩니다. 을 set nofoldenable열 때, 파일 즉,하지 접힌 "정상"임을 확인합니다.


나는 C가 작성한 코드를 가지고 있으므로 강사는 그 기능 중 하나에 대해 설명합니다. <kbd> esc </ kbd>를 눌러 명령으로 이동합니다. : 다음에 zc를 쓰고 아무 일도 일어나지 않습니다.
모하마드 레자 레즈 와니

1
@alex는 zc 뒤에 입력하지 않아야합니다 :. 당신은 입력 set입력 할 때 당신이 얻을 프롬프트 후 명령을 :. zc사용 하듯이 자유롭게, 커서를 이동 할 수 있습니다 유형 zt커서가 현재 화면의 상단에있는 텍스트를 얻을 수 있습니다.
Anthon

39

기본적으로 접기

Vim의 기본 접기 방법은 manual접기가 수동으로 생성됨을 의미합니다. 그렇지 않으면, 폐쇄 또는 사용하여 열 수 할 배이없는 za, zo또는 zc당신이 설명은. 그러나, 당신은이에 의해 배 만들 수 있습니다 zf{motion}에서 정상 모드 zf비주얼 모드; 예를 들어 zfj현재 모드에 대한 접기를 작성하고 다음에 일반 모드 에서 다음 라인을 만듭니다 .

접어 indent

@Anthon의 대답은 접기 방법을 indent; 즉, 접기는 들여 쓰기 수준에 의해 정의됩니다.

접어 syntax

보다 편리한 방법으로 현재 버퍼의 언어 구문에 따라 접기를 자동으로 만들 수 있습니다. 당신이 프로그래밍 언어를 사용하는 경우, 현실을 부르 자 L , 그리고 당신의 접이식 정의가 L를 (예를 들어, 당신의 접는 정보가있는 빔 플러그인을 설치 한 L이 같은; 정의를 c.vim C / C에 대한 ++ 또는 파이썬 -mode for Python)의 경우 접기 방법을 syntax다음과 같이 설정하면됩니다 .

set foldmethod=syntax

그게 다야. 접기 작업에 가장 유용한 명령은 다음과 같습니다.

  • zo 커서에서 접기를 엽니 다.
  • zShift+ o커서에서 모든 접기를 엽니 다.
  • zc 커서에서 접기를 닫습니다.
  • zmfoldlevel하나씩 증가시킵니다 .
  • zShift+ m모든 열린 주름을 닫습니다.
  • zr감소 foldlevel하나.
  • zShift+ rfoldlevel0으로 감소합니다 -모든 접기가 열립니다.

14

당신은 그것을 체계적으로 사용할 필요가 없습니다 : 나는 보통 모션이나 섹션에 의해 폴드를 수동으로 선택합니다. 예를 들어 단락 zfip을 접고 다음 20 줄을 접는 것은입니다 zf20j. za토글하고 zd제거하는 데 사용 합니다 .

이를 위해서는 약간의 작업이 필요하지만 접는 작업을 수행 할 수 있습니다.


4

folding@Anthon의 답변과 같은 현재 세션에서 활성화 할 수 있습니다 . 그러나 영구적으로 만들고 싶다면 최소한 다음 줄 .vimrc을 접는 작업으로 설정해야합니다 .

set foldmethod=indent

indent 접는 종류입니다. :help foldmethod

'foldmethod' 'fdm'      string (default: "manual")
                        local to window
                        {not in Vi}
                        {not available when compiled without the +folding
                        feature}
        The kind of folding used for the current window.  Possible values:
        fold-manual     manual      Folds are created manually.
        fold-indent     indent      Lines with equal indent form a fold.
        fold-expr       expr        'foldexpr' gives the fold level of a line.
        fold-marker     marker      Markers are used to specify folds.
        fold-syntax     syntax      Syntax highlighting items specify folds.
        fold-diff       diff        Fold text that is not changed.

이제로 파일을 열 때마다 vim설정 한 방법으로 코드가 접힌 것을 볼 수 있습니다. 그럼 당신은 사용할 수 있습니다 za, zc, zo.


vimrc를 사용할 필요가 없습니다. 가끔 접는 방식을 사용하기 때문에 그렇게하지 않았습니다
Anthon

@Anthon : 물론입니다. 답변에 더 많은 정보를 추가하겠습니다.
cuonglm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.