foldmethod = indent와 동일한 vim foldexpr을 작성하려면 어떻게해야합니까?


2

이 답변 의 결과로 , 나는 foldexprvim for for vim 을 작성하려고합니다 foldmethod=indent(시작점으로 사용자 정의 마커를 인식하도록 향상시키기 위해 자세한 내용은 질문을 참조하십시오 ).

나는 이것을 시도했다 :

set foldmethod=foldexpr
set foldexpr=indent(v:lnum)

그러나이 간단한 HTML 예제에서는 실패합니다.

<div id="a">
    <div id="b">
        <div id="c">
            <div id="d">
            </div>
        </div>

        <div id="e">
        </div>
    </div>
</div>

키를 <div id="c">줄에 놓고을 누르면 zc접기가 예상대로 작동하고 해당 div 만 접습니다. 다시 열면 키를 <div id="b">줄 에 놓고 키를 누르면 zc접히지 않고 접기가 실패합니다 <div id="e">.

로 전환하면 foldmethod=indent이런 일이 발생하지 않습니다. 두 번째 접기가 올바르게 수행됩니다. 어떻게 foldexpr동작하도록 수정 하려면 어떻게해야 foldmethod=indent합니까?


이 접근 방식을 사용하여 여러 foldmethods (마커 및 들여 쓰기)를 함께 사용할 수 있습니까?
blueyed

@ blueyed, 나는 두려워하지 않는다. 나는이 프로젝트를 당분간 보류했다. 성공하면 듣고 싶습니다.
Andrew Ferrier

답변:


3

빈 줄은 이전 줄의 접기 수준을 유지해야합니다. 이 시도:

:set foldmethod=expr
:set foldexpr=empty(getline(v:lnum))?'=':indent(v:lnum)/4
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.