접기를 열 때 수동으로 생성된 접기이든 구문에 따라 자동으로 생성된 접기이든 상관없이 커서는 여전히 접기의 맨 위 행에 있습니다. 대신 접힌 부분이 닫히기 전 접힌 부분 내부 위치로 이동하고 싶습니다.
나는 현재 커서 위치에 일종의 후크로 마커를 다시 매핑 zc
하고 생성한 다음 일종의 후크로 해당 마커에 커서를 다시 매핑 하고 이동할 수 있다고 가정합니다 .za
PreFoldClose
zo
za
PostFoldOpen
하지만 이 기능을 간단히 켤 수 있는 옵션이 있었으면 좋겠습니다. 어떻게 생각하나요?
보너스: 버퍼 로드/언로드 중에 파일 마커를 보존하는 방법은 무엇입니까? 명령에 태그가 포함되어 있습니까 mkview
?
답변1
를 사용하여 접힌 부분을 닫은 다음 zc
(이동하지 않고) 를 사용하여 다시 열면 zo
커서 위치가 접힌 부분 내에 유지됩니다. 이는 이제 선이 접힌 부분 안에 숨겨졌음에도 불구하고 현재 줄 번호가 접힌 부분을 닫기 전의 위치에 남아 있기 때문입니다.
하지만 일단 이동하면 Vim은 커서 위치를 눈에 보이는 위치로 업데이트해야 합니다. 수직 이동의 경우 이는 첫 번째 행이 현재 행으로 접혀 있음을 의미합니다. 다른 모든 행은 접힌 부분 안에 숨겨지며 거기에 도달하려면 접힌 부분을 열어야 합니다.
이를 변경하려면 제안된 태그 사용 접근 방식이 합리적으로 보입니다. 그러나 이는 재방문에만 해당됩니다.마지막접기(또는 최대 26접기, 버퍼에서 사용 가능한 로컬 마커 수에 따라 제한됨). 마커의 장점은 줄 번호 변경에 자동으로 적응한다는 것입니다. 즉, 스크롤 없이 볼 수 있는 부분의 편집은 위치 정보를 무효화하지 않습니다. 태그 수보다 많은 수의 접힌 부분을 저장하려는 경우 접힌 부분은 현재 행 범위로만 식별할 수 있고 편집 중에 해당 행이 변경된다는 문제가 발생합니다.
요약: 계속해서 아이디어를 시도해 보세요. 하지만 마지막 접힌 부분으로 제한되며 모든 접힌 부분을 덮도록 일반화할 수는 없습니다.
보너스 답변: 파일(대문자) 태그는 다음 위치에 저장됩니다.웨이밍 정보파일, 다음에 의해 제어됨:help viminfo-f
그리고:help viminfo-'
. :mkview
점수는 고려되지 않습니다.