문제
질문에서 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%
)