대문자와 특정 문자로 끝나는 단어를 일치시키는 방법은 무엇입니까?


9

lblSERINOd문장 과 같은 단어가 있습니다 . 단어는 공백으로 구분됩니다.

d모든 단어의 끝 부분을 로 바꾸고 싶습니다 u. 예를 들면 lblSERINOd다음과 같습니다 lblSERINOu.

나는 시도 s/.*\ud /u /g했지만 Vim은 그것을 찾을 수 없다고 말한다 .*\ud.

여기서 무슨 문제가 있습니까?

답변:


10

이를 수행하는 한 가지 방법은 다음과 같습니다.

:%s/\u\zsd\>/u/g

처음에는 새로운 Vim 정규식 엔진 ( "빠르지 만 제한적"으로 광고되고 있음)은 \u에서 이해할 수 없다고 가정 :substitute했지만, 그렇지 않습니다. 나는 오히려 영업 이익을 사용하는 것을 잊었다 지금 생각 %하고 단순히 잘못된 줄에 검색; 이것은 오류 메시지를 설명 할 것이지만 물론 "the"원인으로 확인되어야합니다.


2
're'엔진에 대해 확신하십니까? 이것이 어떻게 차이가 나는지 모르겠습니다.
Christian Brabandt

아니, 전혀 확실하지 않습니다 ... 나는 작동하지 않는 빠른 테스트를 한 다음 pattern도움말 파일에서 다시 읽었 으며, 새로운 엔진이 이전 엔진보다 더 제한적이라고 언급했습니다. 내 첫 번째 테스트는 다소 결함이있을 수 있습니다
VanLaser

5

Vim의 'magic'옵션을 기본값에서로 변경했을 수 있습니다 'nomagic'. 당신은 명령으로 이것을 확인할 수 있습니다

:verbose set magic?

에 설명 된대로 : 도움 / 마법 , 'nomagic'원인 .regexp와의이 리터럴 점 대신 "모든 문자와 일치"를 의미하는 메타 문자로 취급되어야한다.

나는 것이 매우 기본값에서이 옵션을 떠나 좋습니다. 이것은 실제로 존재해서는 안되는 몇 가지 옵션 중 하나이며 플러그인에서 미묘한 문제를 일으킬 수 있습니다.

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