예를 들어, 약 800줄 길이의 다양한 도메인 이름이 포함된 파일이 있습니다. 우리는 vim을 사용하여 www.example.**로 시작하는 모든 도메인 이름을 빠르게 찾고 싶습니다. 여기서 **는 임의의 유형의 두 글자입니다.
example.site"
example.link]"
example.example'
example.ex'
example.xx]"'
이제 vim에서 용어를 사용하여 검색할 수 있습니다 . 하지만 위의 예에서 찾을 example.
수 있도록 일치시키기 위해 와일드카드를 어떻게 사용합니까 ?example.ex' and example.xx]"
우리는 이렇게 문자열을 강조하고 싶지 않습니다
> example.site"
> example.link]"
> example.example'
그냥 example.ex and example.xx
(다른 모든 문자열을 제거하고 고유하게 일치하는 문자열을 유지할 수 있다면 더 좋을 것입니다)
답변1
당신이 사용할 수있는:
/example\.\w\w\W
"예시"를 검색해 보세요. 두 개의 "단어 문자" \w
와 "비단어 문자"가 차례로 옵니다.\W
패턴과 일치하지 않는 모든 행을 삭제하려면 다음을 수행하세요.
:v/example\.\w\w\W/delete
그렇지 않으면:
:v/example\.\w\w\W/d
또는 부정과 함께 g[lobal] 명령을 사용하십시오 !
.
:g!/example\.\w\w\W/d
위의 세 가지 명령은 다음과 같습니다.
example.site"
example.link]"
example.example'
example.ex'
example.xx]"'
다음을 입력하세요:
example.ex'
example.xx]"'
고쳐 쓰다
이러한 패턴이 같은 줄에 있는 경우를 처리하려면 다음과 같이 하세요.
example.site"
example.example' example.ex' example.link]"
example.xx]"'
다음 검색 패턴을 사용할 수 있습니다.
/example\.\w\w\w[^ ]* \?
"예"를 찾는 방식으로 작동합니다. 세 개의 "단어 문자" 뒤에 임의 개수의 문자가 옵니다.아니요공백 [^ ]*
이고 선택적으로 공백으로 종료됩니다 \?
.
따라서 일치하는 항목을 아무것도 없는 것으로 바꿀 수 있습니다. 즉, g
찾은 첫 번째 일치 항목뿐만 아니라 줄의 모든 일치 항목에 대체 항목이 적용된다는 의미입니다.
:%s/example\.\w\w\w[^ ]* \?//g
얻으려면 :
example.ex'
example.xx]"'
( 다음을 사용하여 빈 줄을 제거할 수도 있습니다 :g/^$/d
.|
:%s/example\.\w\w\w[^ ]* \?//g | %g/^$/d