이 Vim 마법은 무엇입니까?


5

질문에 대해 jVi 그리고 .vimrc를 파싱 할 수있는 능력을 보았을 때 저자는 jVi가 처리 할 수없는 복잡한 vim 바인딩 예제를 제공합니다.

inoremap hh <c-o>?\%<c-r>=line('.')<Return>l\({}\\|\[]\\|<>\\|><\\|()\\|""\\|''\\|><lt>\)?s+1<Return>

나는 그것이 무엇을 (대부분은 어떻게)하는지에 관해 궁금하게 생각한다. 지금까지 나는 얻는다 :

  • & lt; c-o & gt; : 일반 모드에서 하나의 명령을 실행하고 삽입 모드로 돌아갑니다.
  • ? / % n : 지정된 dec / hex 코드가있는 문자를 뒤에서 봅니다.
    • 여기서 라인 번호를 삽입하는 지점은 무엇입니까?
  • 마지막 부분은 대괄호의 특정 조합을 찾고 거기에 커서를 놓습니다.
    • 나는 어떻게 이해하지 못한다. l 그런 식으로 사용할 수 있습니다.

주의를 기울여야겠습니까?

답변:


4

그만큼 Ctrl + 영형 당신이 지시 한대로입니다. 그리고 첫 번째 ? ~하다 뒤로 검색을 시작하십시오.

다음과 같은 패턴 시퀀스 \%15l 검색을 15 행으로 제한하고, l 후 첫번째 <Return> 그러한 순서의 끝이다. 매핑은 다음을 사용합니다. Ctrl + 아르 자형 , 특별 = 등록 ( :help i_CTRL-R ), 표현식 line('.') 현재 줄 번호를 그 안에 삽입한다. 검색을 다른 행으로 이동하지 못하게합니다.

마지막까지 매핑의 나머지 부분 ? 캐릭터는 꽤 똑바르다. 정규 표현을 전달하여 여러 문자 시퀀스 중 하나와 일치시킵니다.

마지막 ? 패턴의 끝을 나타냅니다. s+1 부분은 일치가 시작된 후 커서가 1 문자 배치됩니다 ( :help search-offset ).


나는 : help references를 고맙게 생각한다.
Ярослав Рахматуллин
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.