VIM에서 긴 C 코드를 자동으로 접을 수있는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/762310

  •  11-09-2019
  •  | 
  •  

문제

나는 정기적으로 접히지 않고 C- 코드를 만난다. 접이식이 없으면 특히 긴 파일로 읽는 것이 자극적입니다. 어떻게 접을 수 있습니까?

도움이 되었습니까?

해결책

구문에 따라 접 힙니다

:set foldmethod=syntax

비트에서 수동으로하고 싶다면 접 힙니다.

:set foldmethod=manual

그런 다음 ZF를 선택 / 이동하고 누르면 새 접이식을 만듭니다.

shift-v j j zf

(공간 무시)

편집 : 또한 Indent and Marker FoldMethods에 대한이 답변의 의견을 참조하십시오.

다른 팁

나는 당신이 용어를 혼합했을 것이라고 생각합니다. "포장"또는 "폴딩"이 필요합니까? 랩핑은 길이로 인해 화면에 일반적으로 맞지 않는 선입니다. 즉, 화면의 여러 연속 라인에 표시됩니다 (실제로는 여러 줄의 한 줄입니다. 설명하기가 어렵고보기가 가장 좋습니다. 관행).

VIM 랩핑에서 설정됩니다

:set wrap

켜고 켜고

:set textwidth=80

VIM이 텍스트를 포장 해야하는 위치를 결정하기 위해 (80자는 일반적으로 좋은 척도입니다).

반면에 접는 것은 완전히 다른 문제입니다. VIM이 여러 줄의 코드 (예 : 함수)를 한 줄의 코드로 접는 것입니다. 코드의 가독성을 높이는 데 유용합니다. Vim에는 몇 가지 접는 방법이 있습니다.

:help folding

당신이 찾고있는 것은 구문 접이식이지만 틀릴 수 있다고 생각합니다. 도움말 페이지를 읽는 것이 좋습니다. 길고 매우 유용하지 않습니다.

나는 롤업했다 C 및 C ++ 용 플러그인을 접습니다. 구문 접이식으로 수행 된 작업을 넘어서 (개선 될 수 있고, 모릅니다), 압입 및 마커 기반 접이식에 비해 덜 시끄럽고 실제로 유용하지 않은 것들을 남깁니다.

경고 : 괜찮은 반응 시간을 갖기 위해서는 약간의 단순화를해야했고 때로는 결과가 상당히 엉망이되었습니다 (우리는 입력해야합니다. zx 그것을 해결하기 위해).

다음은 플러그인이 올바르게 균형 잡힌 C ++ 소스 코드를 접는 방법을 확인하는 작은 스크린 캐스트입니다.

enter image description here

VI (VIM과는 반대로)에서 답은 다음과 같습니다.

:set wm=1

이렇게하면 라인이 끝나기 전에 랩 마진을 한 문자로 설정합니다. 이것은 가변 크기의 창을 가진 세계 최고의 사양이 아닙니다 (크기를 변경하기가 어려울 때 녹색 화면으로 의미가 있습니다).

즉, VIM에서 수행하는 대안적인 방법도 있습니다.

:set textwidth=30

보다: VIMDOC 사용자 설명서 섹션 25.1

당신은 아마도 설정을 원할 것입니다

:set foldmethod=syntax

그러나 수동으로 넣지 마십시오! VIMS의 가장 큰 기능 중 하나에 누락 된 수백 개의 파일 유형에 대한 사용자 정의 설정이 이미 작성되었습니다. 그것을 얻으려면 이것을 당신의 ~/.vimrc에 추가하십시오.

filetype plugin on
filetype indent on

Filetype 감지는 대부분 확장자,이 경우 *.c 파일을 기반으로합니다. 자세한 내용은 도움말 : Filetype을 참조하십시오. 이 Filetype 기반 설정을 사용자 정의 할 수도 있습니다.

실제로, 또 다른 매우 간단하고 효과적인 방법이 있습니다. foldmethod = marker 그리고 설정 foldmarker 되려고 {,}. 폴드 결과는 다음과 같습니다.

  1. 모든 함수는 접 힙니다. 기본적으로 IDE의 개요처럼 보입니다. (그리고 당신도 할 수도 있습니다 set foldlevel=1또는 더 이상, 처음에 모든 것을 접고 싶지 않다면)

enter image description here

  1. 이것은 Level-1을 통해 열 때 일반적인 기능의 모습입니다. zo.

enter image description here

또한 구문으로 접는 데 약간의 추가 작업이 필요하며 여기에 좋은 일이 있습니다. 지도 시간 그것에 대해. 그러나 나는 접힌 것 같다 marker={,} 가장 중요하고 가장 중요한 것은 단순하고 깔끔합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top