Vim-하나의 줄 바꾸기 \ n을 두 줄로 바꾸는 방법


34

vim 편집기에서 vim 명령 모드를 사용하여 줄 바꿈 문자 (\ n)를 줄 바꿈 문자 (\ n \ n)로 바꿉니다.

입력 파일 내용 :

This is my first line.
This is second line.

내가 시도한 명령 :

:%s/\n/\n\n/g

문자열을 원하지 않는 문자로 바꿉니다.

This is my first line.^@^@This is second line.^@^@

그런 다음 다음 명령을 시도했습니다

:%s/\n/\r\r/g

제대로 작동하고 있습니다. 왜 두 번째 명령으로 잘 작동하는지 설명 할 수 있습니까?



2
참고 : Vi 및 Vim (베타) SE도 있습니다.
Dubu December

2
참고 /로 구분 기호 로 사용할 필요는 없습니다 . :%s;\n;\n\n;g
DJMcMayhem

1
검색 \n으로 대체 \r\r, :% s/\n/\r\r/g: stackoverflow.com/a/71334/911945
안톤 타라 센코

답변:


47

이상하게도 교체를\n 위해 vim에서 줄 바꿈을 의미하지는 않지만 null입니다. ASCII 널은 ( )입니다.^@control@

역사적으로 vi는 줄 바꿈으로 줄 바꿈 ^M( controlM)을 대체합니다 . vim \r은 C 언어와 같은 확장명을 추가 하여와 같음을 의미 ^M하지만 개발자는 텍스트를 바꿀\n 때 평균 null을 선택했습니다 . 이것은 개행을 찾는 search 에서 사용하는 것과 일치하지 않습니다 .

더 읽을 거리 :


7

이 시도 : %s/$/^V^M/(곳 ^V이다 Ctrl-V하고 ^M있다 Ctrl-M- 당신은 입력 할 때 ^V그것이 인쇄됩니다 ^당신이 입력 할 때 다음 그 위에 백 스페이스 다음 문자와 ^M같이 나타납니다 ^M에서 Ctrl-V는 표준 청각 장애입니다 ... 문자 다음 명령을 실행 - 문자 stty -a로는 tty의 특별 문자를 보여주세요).


실제로, 숙련 된 전문가는 dos2unix 또는 이와 유사한 것을 제거하고 사용하는 대신 CRLF에서 요구되는 변환에 대해 이것을 알고있을 것입니다. Ctrl-V 사용법은 1 일 수업입니다.
mckenzm

5

vim핸들 파일이 널 문자를 포함 하는 방법 (메모리 는 안됨) 을 메모리에 \n널 문자를 나타내는 데 사용 하십시오 .\0vimvi

의 사용은 \n버퍼 라인의 일치의 끝, 문자열이 아닌 줄 바꿈 표현에 사용하는 경우.

자세한 내용은 : h NL- 사용 Null: h CR 사용 -NL 을 참조하십시오.


1

Neovim ( nvim) 및 Vim버전으로 테스트

NVIM v0.3.0
VIM - Vi IMproved 8.1

줄 바꾸기를 제거하십시오.

cell
allele
rs2981578
fgfr2

다음 \n은 개행과 일치합니다 ( 그러나 개행 을 삽입 하려면을 사용하십시오 \r).

:'<,'>s/\n/|/g

cell|allele|rs2981578|fgfr2

줄 바꾸기를 추가하십시오.

아니:

cell|allele|rs2981578|fgfr2

:'<,'>s/\n/|/g

cell^@allele^@rs2981578^@fgfr2

^@LF의 분음 부호입니다 (줄 바꿈; http://vimhelp.appspot.com/digraph.txt.html#digraphs-default 참조 )

예:

cell|allele|rs2981578|fgfr2

:'<,'>s/|/\r/g

cell
allele
rs2981578
fgfr2

OP의 질문 (1 \n을 2 로 바꾸는 방법)을 해결하려면 \n\n다른 것을 추가하십시오 \r.

cell
allele
rs2981578
fgfr2

:'<,'>s/\n/\r\r/g

cell

allele

rs2981578

fgfr2

... 즉, 원래 줄 바꿈 ( \n)을 일치시키고 두 줄 바꿈 / 캐리지 리턴 ( \r\r)으로 바꿉니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.