vim에 ^와 같은 패턴이 있습니까?


20

Vim 일반 모드에서 0 명령은 행의 첫 번째 열로 이동하고 행 ^의 논리적 시작 (예 : 공백이 아닌 첫 번째 문자)으로 이동합니다. 정규 표현식 세계 ^에서 줄의 첫 문자, 공백 여부와 일치합니다. Vim에는 '^'명령처럼 동작하는 패턴이 있습니까? 줄의 논리적 시작과 일치합니까?


정규식에서 ^는 일반적으로 첫 번째 문자가 아니라 줄의 시작과 일치한다고 생각합니다. ^. 시작과 두 번째 문자가 아닌 시작과 첫 번째 문자를 일치시킵니다.
bdsl

답변:


17

공백이 아닌 첫 번째 문자를 한 줄에 일치시키는 바로 가기가 없으므로 다음과 같이 패턴을 직접 빌드해야합니다.

^\s*restofpattern

일치 항목에 공백을 포함하지 않으려면 다음과 같이 너비가 0 인 어설 션을 사용해야합니다.

\(^\s*\)\@<=restofpattern

정확히 예쁘지는 않지만 적어도 작업이 완료됩니다.


6

공백이 아닌 첫 번째 문자 와 일치 시키려면 \S평소처럼 사용하십시오 .


당신이 사용하는 경우 ^vim의 정규 표현식에서 하는 경우 공백이 포함되어 있어도 실제로 줄의 시작과 일치합니다.

예를 들어이 줄은 공백으로 시작합니다.

 <- there's a space there you can't see :)

이 vim 명령은 선행 공간을 제거합니다.

:%s/^ //

결과는 다음과 같습니다.

<- there's a space there you can't see :)

따라서 정규식은 명령이 수행하지 않아도 예상대로 작동합니다.


난 당신이 downvote를 설명 할 것이라고 가정합니다. 이 대답은 내가 아는 한 정확합니다.
마이클 햄튼

1
나는 공감하지 않았지만 명확하게 설명했다. Vim에 공백이 아닌 첫 번째 문자와 일치하는 연산자가 있는지 궁금했다. ^(모든 제정신 정규식 구현 등) 연산자는,이 공백 인 경우에도 첫 번째 문자와 일치합니다.
Michael

글쎄, 당신은 어떻게 그것을 정상적으로 기대 했습니까? 일반적으로 정규 표현식에서는 \S공백이 아닌 첫 번째 문자와 일치하는 것을 사용 합니다.
마이클 햄튼

2
\S공백이 아닌 문자 와 일치 합니다 . 달리 말하면, Vim이 이것을위한 너비가 0이 아닌지 궁금합니다 ^\W*\S.
Michael

1
내가 아는 엔진은 그 기능을 제공하지 않지만 언제 다시 범용 엔진에 관심이 있었습니까? Vim은 범용 정규식 엔진이 아닙니다. 정규식 엔진이있는 편집기이므로 편집기 내부에서만 중요한 무언가를위한 특별한 구조가 있는지 궁금합니다.
Michael
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.