검색에서 슬래시를 피하고 긴 문자열을 대체하는 대안


10

vim 검색에서 문자열의 모든 특수 문자를 이스케이프 처리하는 것보다 문자열을 대체 할 수있는 대안이 있습니까?

예를 들어, 다음 문자열을 일치시키고 무언가로 바꾸려면

[ERROR] Login unsucessful

그럼해야 해요

:%s/\[ERROR\]\ Login\ unsucessful/something/g

그리고 많은 특수 문자를 포함하는 복잡한 문자열에 대해 훨씬 더 추하고 고통 스럽습니다.

나는 같은 것을하고 싶다

:%s/"[ERROR] Login unsucessful"/something/g

모든 탈출을 피할 것입니다. 이와 같은 기능이 있습니까?

답변:


16

very-nomagic스위치 를 사용할 수 있습니다 . 자세한 내용 :h \V을 참조하십시오. 이것은 당신에게 줄 것 %s/\V[ERROR] Login unsuccessful/something/g입니다. 더 가벼운 버전이며 널리 사용되지 않는 것으로 보이는 nomagic스위치 도 있습니다.\M\V

또한 사용하지 않을 때도 예제에서와 같이 공백을 벗어날 필요가 없습니다 \V.


감사. 정확히 내가 원하는 것. 내 Google 검색에서 이것을 얻지 못했습니다. 왜 그렇습니까?
MohitC

2
@MohitC 내가지도 /하는 /\v내가 매핑 한, 그래서 대부분의 검색에 대한 "매우 마법"가능하게 //하는 /(검색 기록 무시하고 수정을 거치지 유용) 수정되지 않은 검색을 시작하고 /v/위해 /\V신속하게 검색을 위해 모든 마법을 해제합니다.
Kyle Strand

@MohitC 사실, 모든 설정에서 가능한 한 일관성있게 "매우 마술"을 사용하기 위해 플러그인을 사용하기 때문에 설정이 그보다 더 복잡합니다. 여기에 내 대답을 참조 하십시오 .
Kyle Strand

7

공백을 피할 필요는 없습니다. 그래서 이건:

:%s/\[ERROR\]\ Login\ unsucessful/something/g

실제로 :

:%s/\[ERROR\] Login unsucessful/something/g

물론 매우 특별한 "모드"를 활성화 하여 특수 문자를 덜 특별하게 만들 수 있습니다.

:%s/\V[ERROR] Login unsucessful/something/g

참조하십시오 :help /magic.


2

nomagic 플래그 외에도 다른 답변에 언급되어 있습니다.

검색 문자열을 정확하게 입력 할 필요가없는 경우가 종종 있습니다

예를 들어

[ERROR] Login unsucessful

당신은 표현을 사용할 수 있습니다

.ERROR. Login unsucessful

분명히 데이터에는 의도 한 대상과 다르지만 표현식과 일치하는 다른 문자열이 포함되어 있지 않아야합니다.

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