질문 에서 Vim에서 개행 문자를 바꾸는 방법은 무엇입니까? . 다음과 같이 줄 바꿈으로 텍스트를 바꿀 때는 \ r을 사용해야합니다.
:%s/%/\r/g
그러나 문자의 줄 끝과 줄 바꿈을 바꿀 때 다음과 같이 할 수 있습니다.
:%s/\n/%/g
매뉴얼의 어떤 부분이 이러한 행동을 문서화하고 그 이유는 무엇입니까?
질문 에서 Vim에서 개행 문자를 바꾸는 방법은 무엇입니까? . 다음과 같이 줄 바꿈으로 텍스트를 바꿀 때는 \ r을 사용해야합니다.
:%s/%/\r/g
그러나 문자의 줄 끝과 줄 바꿈을 바꿀 때 다음과 같이 할 수 있습니다.
:%s/\n/%/g
매뉴얼의 어떤 부분이 이러한 행동을 문서화하고 그 이유는 무엇입니까?
답변:
에서 http://vim.wikia.com/wiki/Search_and_replace :
검색 할 때
...
\n줄 바꿈,\risCR(캐리지 리턴 =Ctrl-M=^M)교체 할 때
...
\r개행 문자이며\n널 바이트 (0x00)입니다.
:h :s%, 특히 마지막 단락을 참조하십시오. (경유 :h :s)
이것에 대한 또 다른 측면 \0은 전통적으로 NULL 인 s//\0/"전체 일치 패턴"을 의미하는 것으로 받아 들여진다
. (그런데과 중복되어 있고 그 이상입니다 &).
\0의미로 NULL사용하므로,\n\n을 의미 하는 데 사용할 수 \n없으므로를 사용하십시오 \r.\r의미를 사용할 수는 없지만 \r, 누가 그 문자를 의도적으로 추가하고 싶은지 모르겠습니다.—☈
\n입니다. 환상적인 답변.
:help NL-used-for-Nul기술적 세부 사항 :
<Nul>파일의 문자는<NL>메모리 와 같이 저장됩니다 . 디스플레이에서 "^@" 로 표시됩니다 . 파일을 읽고 쓸 때 번역이 수행됩니다.<Nul>검색 패턴과 a 를 일치 시키려면 CTRL- @ 또는 " CTRL-V 000"을 입력하면 됩니다. 이것은 아마도 당신이 기대하는 것입니다. 내부적으로 문자는<NL>검색 패턴에서 로 대체됩니다 . CTRL-V 를 입력하면 CTRL- J 도 a를 삽입 하여 파일에서<NL>a<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%)
%검색 및 교체시 무엇을 위한 것입니까?