VimScript에서 커서가 멀어 질 때 텍스트를 변경하는 가장 좋은 기술은 무엇입니까?
저는 vimscript를 처음 사용합니다. vimwiki 또는 vim-note와 같은 플러그인이 보이는 텍스트의 형식을 변경하는 방법을 알아 내려고합니다.
구문 강조 표시기를 사용하여 강조 표시, 굵게, 밑줄, 취소 선 등을 사용하는 방법을 알고 있습니다.
그러나 이러한 플러그인은 커서가 줄에서 멀어지면 보이는 텍스트를 변경합니다. 커서가 줄로 돌아 가면 텍스트가 다시 렌더링되어 입력 된 내용을 표시합니다.
다음은 예 (vimwiki)입니다 *bold*
. 커서를 멀리 이동하면 굵게 표시 되고 커서를 다시 렌더링되는 줄로 가져 오면 입력 할 수 있습니다 *bold*
.
이 기술은 어떻게 달성됩니까? 나는 vimwiki 소스 (매우 복잡함)를 살펴 보았고, vim-note도 살펴 보았지만 이들이 전환을 수행하는 위치를 파악할 수 없었습니다 (에 대한 매핑이있을 것이라고 생각했을 것입니다 <CR>
).
버퍼 2 개 (하나는 표시되고 하나는 숨겨진 상태)를 유지합니까?
에서 VIM-노트 , 그들은이 기술을 달성하기 위해 vim 스크립트의 실행 취소 사용하고 있습니까? 그렇다면 어떻게 작동합니까?
답변
이 플러그인은 Vim의 구문 숨김 기능을 사용하고 있습니다.
Vim의 구문 강조 표시는 일반적으로 텍스트의 색상 (또는 밑줄 또는 굵게 표시와 같은 몇 가지 다른 속성)을 변경하는 데 사용되지만 대신 숨김 기능을 사용하면 일치하는 항목을 완전히 숨기거나 단일 문자 로 바꿀 수 있습니다 .
'concealcursor'설정 에 따라 항목이 포함 된 행으로 커서를 이동하면 실제 텍스트가 전체로 표시됩니다. 이 'conceallevel'설정을 사용하여 conceal
완전히 비활성화 하거나 항목을 숨기거나 바꿀지 여부를 변경할 수도 있습니다 .
특정 예에서 vimwiki는 concealends인수를 사용 하여 굵은 구문 영역의 각 끝 :syntax
을 숨길 수 *
있습니다.