it-swarm-ko.tech

왜 Vir의 줄 바꿈입니까?

질문에서 Vim에서 줄 바꿈 문자를 바꾸는 방법?. 다음과 같이 줄 바꿈으로 텍스트를 바꿀 때는\r을 사용해야합니다.

:%s/%/\r/g

그러나 문자의 줄 끝과 줄 바꿈을 바꿀 때 다음과 같이 할 수 있습니다.

:%s/\n/%/g 

매뉴얼의 어떤 부분이 이러한 행동을 문서화하고 그 이유는 무엇입니까?

243
Vinko Vrsalovic

vim docs on patterns 에서 :

\r는 <CR>과 일치합니다.

\n는 줄 끝과 일치-버퍼 텍스트 대신 문자열에서 일치하는 경우 리터럴 개행 문자가 일치합니다.

154
pjz

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

검색시

...

\n는 개행입니다. \rCR (캐리지 리턴 = Ctrl-M = ^M)

교체 할 때

...

\r는 개행입니다. \n는 null 바이트입니다 (0x00).

190
Limited Atonement

이것에 대한 또 다른 측면은 \0는 일반적으로 NULL이며 s//\0/는 "전체 일치 패턴"을 의미합니다. (그런데 &).

  • 따라서 \0NULL을 의미하므로 \n
  • 따라서 \n은 (는) \n, \r.
  • 따라서 \r은 (는) \r,하지만 누가 그 문자를 고의로 추가하고 싶은지 모르겠습니다.

—☈

105
rking

:help NL-used-for-Nul

기술적 세부 사항 :

파일의 <Nul> 문자는 메모리에 <NL>로 저장됩니다. 디스플레이에서 "^@"로 표시됩니다. 파일을 읽고 쓸 때 번역이 수행됩니다. <Nul>를 검색 패턴과 일치 시키려면 [email protected] 또는 " CTRL-V 000"을 입력하면됩니다. 이것은 아마도 당신이 기대하는 것입니다. 내부적으로 문자는 검색 패턴에서 <NL>로 바뀝니다. 특이한 것은 CTRL-VCTRL-J 를 입력하면 <NL>도 삽입되므로 파일에서 <Nul>도 검색한다는 것입니다. . {Vi는 파일에서 <Nul> 문자를 전혀 처리 할 수 ​​없습니다}


47

우선, :h :s 를 열어 "변경"에 대한 "4.2 대체"섹션을보십시오. 명령이 수락하는 내용은 다음과 같습니다.

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

patternstring에 대한 설명을 확인하십시오.

{pattern}에 대해서는 |pattern| 를 참조하십시오.
{string}는 리터럴 문자열 일 수 있습니다.
특별한; |sub-replace-special| 를 참조하십시오.

이제 검색 패턴과 대체 패턴이 다른 규칙을 따릅니다. |pattern| 링크를 따라 가면 Vim에 사용 된 전체 정규 표현식 패턴을 설명하는 섹션으로 이동합니다.

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

(이 부분의 바로 가기는 :h :s% )

10
syockit