[unix] vim에서 괄호 / 일치하는 항목을 뒤로 검색하십시오.

대부분의 사람들이 알고 있듯이, %라인에서 앞으로 검색하여 다음 쌍의 버팀대 / 브래킷 / 패런을 찾고 일치하는 파트너로 이동할 수 있습니다.

|a|rray[index] = value;
" |e| is the cursor; hit %:
array[index|]| = value;

나는 라인에서 뒤로 검색하는 비슷한 키가 있기를 바라고 있습니다.

array[index] = value|;|
" |;| is the cursor again, hit the key I'm looking for:
array|[|index] = value;

대부분의 vim 명령에는 앞뒤가 모두 있으므로 그렇게해야합니다. 파트너가 없습니까? 그렇다면, 그건 일단 때문이다 페어링 문자가 같은 행동 것인가?



답변

당신이 경우 정말 일반적인 일치하는 문자를 뒤쪽으로 검색하려면, 당신은이 중 하나를 사용할 수 있습니다 vim– 특정 명령 :

  • [(… (이전의 일치하지 않는 (문자 로 이동 )
  • [{… (이전의 일치하지 않는 {문자 로 이동 )

이 두 명령에는 일치하는 전달 파트너가 있습니다.

  • ])… (다음으로 일치하지 않는 )캐릭터 로 이동 )
  • ]}… (다음으로 일치하지 않는 }캐릭터 로 이동 )

#ifdefC 주석에 대한 다른 유사한 명령이 있습니다 .

vim명령을 사용하여 더 많은 정보를 찾을 수 있습니다 :help %.


답변

%는 대괄호를 찾습니다. 따라서 켜져 있으면 (또는 {앞으로 검색합니다.

} 또는) 인 경우 뒤로 검색합니다.

%는 방향이 아니며 일치하는 대괄호를 찾습니다.


답변

방금 시도했습니다 :map ^] ^%%( ^]= Ctrl+ v Ctrl+ 5와 유사하게 %= Shift+ + 사용 5).

주어진 특정 경우에 작동하지만 커서에서 뒤로 검색하지 않기 때문에 항상 줄에서 첫 번째 열린 괄호를 선택하고 일치하는 것이 없으면 줄의 시작 부분에 커서를 둡니다. .


이것은 더 나은 솔루션입니다. 그것은 추악하고 아마도 단순화 할 여지가 많지만 의미가 정확하다고 생각합니다 (열린 파렌이 없으면 커서를 움직이지 않고 현재 열 전에 첫 번째 열린 파린으로 이동합니다 ).

:map ^] ^[:call search("[({[]", "bes", line("."))^M

…에 대한

  • ^]= Ctrl+ v Ctrl+5
  • ^[= Ctrl+v Esc
  • ^M= Ctrl+v Return

답변