vim에서 2D 검색을 어떻게 수행합니까?


4

파일에서 2 차원 패턴과 일치하는 선을 찾고 있습니다.

예를 들어 다음과 같은 입력 파일이 제공됩니다.

aaaba
aabaa
aaaba
aaaaa
aaaaa

나는 같은 패턴을 사용하고 싶습니다

ab
ba
ab

상단 3 줄에 일치합니다. 이상적으로는 해당 패턴으로 대체 할 수 있기를 원합니다 (예 :

ba
ab
ba

답변:


3

정규 표현식만으로는 수행 할 수 없습니다. 캡처 그룹 처럼 작동하는 특수 원자가 필요 하지만 대신 열을 캡처 한 다음 리콜을 위해 해당 원자를 캡처합니다. 최선의 방법은 다음 행의 각 행을 일치시키는 것입니다.

/ab\ze.*\n.*ba.*\n.*ab/

이를 통해 블록의 행과 일치하는 행뿐만 아니라 블록의 텍스트를 포함하는 모든 행은 동일한 세로 정렬뿐만 아니라 첫 번째 행의 일치 만 강조 표시됩니다. 내 SearchHighlighting 플러그인 도이 기능을 제공합니다 (로 매핑 {Visual}*).

충분하지 않은 경우 ( /c플래그를 사용하여 :substitute각 일치 항목을 수동으로 확인하고 승인 할 수있는 경우) 자체 검색 (및 대체) 인프라 (예 : /, n/ N, 및 등가)를 구축 :s하고 블록에 대한 추가 어설 션을 수행해야합니다. Vimscript의 정렬.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.