버퍼 내에서 퍼지 검색을 수행하기위한 스크립트를 만들려고합니다. 주요 아이디어는 몇 가지 입력을 받아, 삽입하는 .\{-}
캐릭터의 모든 쌍 사이에, 예를 들면 foo
됩니다 f.\{-}o.\{-}o
.
이것은 꽤 잘 작동하지만 비 이상적인 일치 항목이 많이 있습니다. 퍼지 검색은 가장 짧은 일치 항목을 먼저 생성해야한다고 생각합니다. 다음 예제를 고려하십시오.
public void put()
대한 퍼지 검색 수행 put
(이렇게하면 p.\{-}u.\{-}t
) 전체 문자열을 일치 public void put
하지만, 짧은 put
일치하는 내에서 더 유용 할 것이다.
탐욕스럽지 않은 연산자는 이전에 끝나는 일치 항목을 찾는 데 능숙 하지만 동시에 시작 하는 일치 항목을 선호하는 항목이 필요합니다 . 개념적으로는 양방향으로 욕심이 없어야합니다. 이것이 가능한가?
또한보십시오 : stackoverflow.com/q/15191291 (아쉽게도 질문에 대한 답변은 없습니다)
—
Doorknob
@Doorknob, 대답은 없지만 좋은 지적 : Regex는 문자열 중간에서 검색을 시작하지 않습니다. 작업을 완료하려면 VimScript가 필요할 수 있습니다. 나는 (긴) 일치를 뒤집고 반대 패턴을 찾는 아이디어를 탐구하고 있습니다.
—
tommcdo
Tim Pope는 오늘 vim-haystack을 출시했습니다 . 필요한 것과 비슷하게 들립니다. 어쩌면 당신은 그것으로부터 영감을 얻거나 어쩌면 그것을 사용할 수도 있습니다.
—
tokoyami 2012
패턴을 만족시키면서 경기가 가능한 한 늦게 시작하고 가능한 빨리 종료되기를 원합니다.
—
tommcdo
근사 문자열 일치 알고리즘을 살펴보면 정규 표현식보다 퍼지 찾기를 구현하는 데 더 적합한 도구입니다.
—
toro2k