vim에서 foldlevelstart를 설정하여 초기에 아무것도 접지 않고 zr이 즉시 작동하도록하려면 어떻게해야합니까?


8

vim에서는 일반적으로 대부분의 파일 형식 으로 설정 foldmethod했습니다 indent. 일반적으로 모든 주름을 연 상태에서 파일을 여는 것이 좋습니다. 그러나 zm파일 전체에서 한 번에 한 단계 씩 접기를 시작 하기 위해 즉시 사용 을 시작 하는 것이 도움이 되므로 세부 사항이 없어도 파일의 전체 구조를 볼 수 있습니다.

내가 찾은 유일한 일반적인 해결책 foldlevelstart은 모든 파일 (다른 파일은 다른 최대 들여 쓰기 수준을 염두에 두어야 함)이 완전히 펼쳐지기 시작하도록 99와 같이 매우 높은 숫자 로 설정 하는 것입니다. 그러나 필자 는 파일의 최대 폴더 수준 (일반적으로 99보다 훨씬 작음) zm을 줄이기 위해 반복적 으로 사용해야 foldlevel하므로 번거롭고 비현실적입니다. foldlevelvim 명령 줄을 사용하여 수동으로 설정할 수 있지만 여전히 파일의 최대 들여 쓰기를 알아야합니다.

foldlevel파일 자체의 최대 현재 들여 쓰기 / 접기 레벨보다 정확히 하나 이상 으로 설정된 파일을 여는 실용적인 방법이 있습니까?

예를 들어, 다음 파일이 주어진 경우 :

a
  b
    c
      d1
      d2
    e
      f1
      f2

첫 번째 키를 누르면 다음과 같이 zm표시됩니다.

a
  b
    c
+--  2 lines: d1------
    e
+--  2 lines: f1------

(그러나 파일의 초기 최대 들여 쓰기가 임의의 값일 수있는 일반적인 경우에는 작동해야합니다).


1
당신은 혼란 스럽 zr습니다 zm; 후자 감소 foldlevel한다.
Ingo Karkat

@ IngoKarkat, 당신 말이 맞아요. 혼란을 끼쳐 드려 죄송합니다. 항상 그 핵심 콤보를 반 직관적으로 생각합니다. 내 질문을 수정했습니다.
Andrew Ferrier

"저는 항상 그 핵심 콤보를 반 직관적이라고 생각합니다." 의미하기로했다 zm= 더 배 (빼기 foldlevel)과 zr= 이하 (추가 foldlevel)를 배
wisbucky

답변:


9

현재 파일에서 가장 높은 폴더 레벨을 찾습니다.

:let &foldlevel = max(map(range(1, line('$')), 'foldlevel(v:val)'))

이를 자동으로 설정하려면 다음을 사용하십시오 :autocmd.

:autocmd BufWinEnter * let &foldlevel = max(map(range(1, line('$')), 'foldlevel(v:val)'))

1
잉고, 완벽 해, 바로 내가 찾던 것입니다. 감사. 수치심 foldlevelstart에는 이와 같은 옵션이 없습니다.
Andrew Ferrier

Cygwin Vim에서는 작동하지 않는 것 같습니다. 이러한 설정으로 파일을 시작할 때 My foldlevel는 0이고 foldlevelstart-1입니다.
CMCDragonkai

0

을 사용하는 대신을 사용 zr하면 zR모든 접기가 열립니다. 마찬가지로 zM모든 주름을 닫습니다.


게리, 고마워 그것은 가깝지만 내가 묘사 한 것을하지 않습니다. 접는 수준을 하나씩 줄이지 만 문제의 파일과 관련된 최대 접는 수준을 줄이는 명령을 원합니다. 이를 위해서는 zM을 사용하여 폴더 수준을 0으로 줄이고 zr을 반복해서 반복하여 세부 정보를 더 많이 열어야합니다. 하나의 명령 / 키 조합을 찾고 있습니다.
Andrew Ferrier

2
당신은 할 수있는 zR다음 (가장 높은 수준으로 설정 foldlevel)를 zm작동합니다. 하나의 추가 단계 일뿐입니다.
wisbucky 2016 년

0

이 옵션을 set nofoldenable사용하면 모든 접기를 연 상태에서 파일을 시작할 수 있습니다


그것은 내가 물었던 질문이 아닙니다. 접기를 활성화하고 싶습니다.
Andrew Ferrier
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.