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.