Vim 검색 및 바꾸기 - 정규식

Vim 검색 및 바꾸기 - 정규식

검색 및 바꾸기를 수행하고 싶습니다. 숫자가 아닌 문자 앞의 줄 바꿈은 탭으로 바꿔야 합니다. 나는 노력했다

%s/\n\D/\t/g

그러나 그것은 개행 다음에 나오는 단어의 첫 번째 문자를 대체했는데, 이는 내가 원했던 것이 아닙니다. 즉,

abcd
abcd

에게

abcd   bcd

a개행 이후에 보존하고 싶습니다 .

답변1

거의 다 왔지만 정규 표현식이 개행 문자를 모두 대체하고 있습니다.그리고탭이 있는 숫자가 아닌 숫자.

모든 개행 문자 뒤에 숫자가 아닌 문자를 탭으로 바꾸는 것은 어떻습니까?그리고 그 숫자가 아닌 숫자?

%s/\n\(\D\)/\t\1/g

\D이스케이프는 약간 지저분하지만 기본적으로 숫자가 아닌 모든 것을 캡처하는 그룹이 있습니다 . 그런 다음 \1탭 뒤에 삽입하기 위해 를 참조합니다 .

답변2

이를 수행하는 한 가지 방법은 종료 일치 마커를 사용하는 것입니다.

%s/\n\ze\D/\t/

이를 수행하는 또 다른 방법은 부정적인 예측을 사용하는 것입니다.

%s/\n\d\@!/\t/

그것들은 정확히 동일하지 않으며, 두 번째는 파일의 마지막 개행 문자도 대체합니다.

답변3

이것이 당신에게 도움이 되기를 바랍니다

:%s#\n.\D#\t#g

관련 정보