문제

질문에서 Vim에서 줄 바꿈 문자를 바꾸는 방법은 무엇입니까?.다음과 같이 개행 텍스트를 바꿀 때 을 사용해야 합니다.

:%s/%/\r/g

그러나 문자의 줄 끝과 개행 문자를 바꿀 때는 다음과 같이 할 수 있습니다.

:%s/\n/%/g 

매뉴얼의 어떤 섹션에 이러한 동작이 기록되어 있으며 그 이유는 무엇입니까?

도움이 되었습니까?

해결책

에서 패턴에 대한 vim 문서:

\r <CR>과 일치

\n 라인 끝과 일치합니다-버퍼 텍스트 대신 문자열에서 일치 할 때 문자 그대로의 Newline 문자가 일치합니다.

다른 팁

에서 http://vim.wikia.com/wiki/Search_and_replace :

검색할 때

...

\n 개행 문자입니다. \r ~이다 CR (캐리지 리턴 = Ctrl-M = ^M)

교체시

...

\r 개행 문자입니다. \n 널 바이트(0x00).

이것의 또 다른 측면은 \0, 전통적으로 NULL인 는s//\0/ "전체 일치 패턴"을 의미합니다.(그런데, 이는 다음과 중복되고 더 길어집니다. &).

  • 그래서 당신은 사용할 수 없습니다 \0 의미하다 NULL, 그래서 당신은 \n
  • 그래서 당신은 사용할 수 없습니다 \n 의미하다 \n, 그래서 당신은 \r.
  • 그래서 당신은 사용할 수 없습니다 \r 의미하다 \r, 하지만 누가 고의로 해당 문자를 추가하고 싶어할지 모르겠습니다.

—☈

:help NL-used-for-Nul

기술적인 세부사항:

<Nul> 파일의 문자는 다음과 같이 저장됩니다. <NL> 기억 속에.디스플레이에서 그들은 "로 표시됩니다.^@".번역은 파일을 읽고 쓸 때 수행됩니다.일치시키려면 <Nul> 검색 패턴을 사용하면 바로 입력할 수 있습니다. CTRL 키-@ 또는 "CTRL-V 000".이것은 아마도 당신이 기대하는 것일 것입니다.내부적으로 캐릭터는 a로 대체됩니다 <NL> 검색 패턴에서비정상적인 것은 그 입력입니다 CTRL-V CTRL-J 또한 <NL>, 따라서 또한 다음을 검색합니다. <Nul>파일에서.{Vi는 처리할 수 없습니다 <Nul> 파일의 모든 문자}


우선, 오픈하세요. :h :s "변경" 문서의 "4.2 대체" 섹션을 참조하세요.명령이 허용하는 내용은 다음과 같습니다.

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]

에 대한 설명을 확인하세요. pattern 그리고 string

에 대한 {pattern} 보다 |pattern|.
{string} 리터럴 문자열 등이 될 수 있습니다.
특별한;보다 |sub-replace-special|.

이제 검색 패턴과 대체 패턴이 서로 다른 규칙을 따른다는 것을 알았습니다.링크를 따라가시면 |pattern|, Vim에서 사용되는 전체 정규식 패턴을 설명하는 섹션으로 이동합니다.

그 동안에, |sub-replace-special| 대체 패턴이 포함된 "4.2 대체"의 하위 섹션으로 이동합니다. \r 줄바꿈/분할을 위해.

(설명서의 이 부분에 대한 단축키는 다음과 같습니다. :h :s%)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top