Vim에서 문자를 개행으로 바꾸는 방법

현재 파일에서 각 ,을 새 줄로 바꾸려고 합니다:

:%s/,/\n/g 

하지만 실제 줄 바꿈 대신 ^@처럼 보이는 것을 삽입합니다. 파일이 DOS 모드 등에 있지 않습니다.

어떻게 해야 하나요?

저처럼 궁금한 점이 있으시다면 Vim에 왜 \r이 개행인가요? 질문도 확인해 보세요.

질문에 대한 의견 (3)
해결책

n대신\r`을 사용합니다.

n으로 대체하면 텍스트에 널 문자가 삽입됩니다. 줄바꿈을 얻으려면\r을 사용합니다. 그러나 줄바꿈을 *검색*할 때는 여전히\n을 사용합니다. 이러한 비대칭성은\n\r`이 약간 다른 일을 하기 때문 때문입니다:

n은 줄 끝(줄 바꿈)과 일치하는 반면\r은 캐리지 리턴과 일치합니다. 반면, 치환에서\n은 널 문자를 삽입하는 반면\r`은 줄 바꿈을 삽입합니다(더 정확하게는 입력 로 처리됩니다). 다음은 Vim 명령줄 기능을 사용하여 이를 설명하는 작은 비대화형 예제입니다(즉, 다음을 복사하여 터미널에 붙여넣어 실행할 수 있습니다). 'xxxd'는 결과 파일의 헥스 덤프를 보여줍니다.

echo bar > test
(echo 'Before:'; xxd test) > output.txt
vim test '+s/b/\n/' '+s/a/\r/' +wq
(echo 'After:'; xxd test) >> output.txt
more output.txt
Before:
0000000: 6261 720a                                bar.
After:
0000000: 000a 720a                                ..r.

즉, \n은 텍스트에 바이트 0x00을 삽입했고, \r은 바이트 0x0a를 삽입했습니다.

해설 (16)

39 의 here&, 또 어떤가.

첫째, vi (m) 를 설정할 수 있는 특수 문자 패턴 매칭 세션 (예: 줄 바꿈). 아마도 이 줄이 실비마르크 에 달하는 it& # 39 의 파일 또는 이레스크 있다.

:set magic

다음으로, 해야 할 것:

:s/,/,^M/g

, ^ M '문자' 를 내려받습니다 mm_mail_doc. &lt kbd&gt Control&lt /kbd&gt kbd&gt v&lt /kbd>;;; - &lt. &lt kbd&gt Enter&lt /kbd&gt 및 히트,,. Windows 에서 kbd>;;;;;; - &lt 못하며창조된 &lt Control&lt /kbd&gt kbd&gt q&lt /kbd>;;;; /kbd&gt &lt kbd&gt Enter&lt. 이러한 방법을 기억하는 리틀이에요 감지에서 기억이 나는 그들이 하는 유일한 방법은 () 이다.

&gt. A: 최악의 제어 문자 what 약간만이라도 나타내는 데 사용할 줄 바꿈?

&gt. B: Either 'q' (말은 일반적으로 Quit&quot 때문에 ";) 또는 'v' 그렇게 쉽게 입력할 수 있기 때문에 <;;; - &lt 약간만이라도 kbd&gt Control&lt /kbd&gt kbd&gt c&lt /kbd>;;; 이 실수로 editor. 죽이고

&gt. A: It so._ _make

해설 (5)

'' \R '와' \n '의 / foo / 표시줄에는 구문에서 따라 다른 의미를 가지고 컨텍스트입니다.

파선-짧은:

Foo "에 대한 ':&lt br/>; \n = 개행 문자 (LF / mac, windows, linux 에서 크레프) &lt br/>; \r = 케리지리턴 (CR) br/&gt <;

'대한' 표시줄에는 :&lt br/>; = br/&gt \r 은 newline<; \n br/&gt byte.&lt = null;;

더 이상: (ascii 와 숫자임)

,,,, /key&gt &lt key&gt &lt /key&gt &lt key&gt &lt ',' =, = 0 = &lt kbd&gt CTRL&lt /kbd&gt &lt NUL 0x10,,,, kbd&gt @&lt /kbd&gt &lt br/&gt. ',' = = =;;; LF 0x0A &lt kbd&gt CTRL&lt /kbd&gt kbd&gt &lt, 10, J&lt /kbd&gt &lt br/>;;; 'CR' = = =;;;;;; kbd&gt &lt /kbd&gt CTRL&lt 0x0D 13 &lt kbd&gt M&lt /kbd>;

이 목록은 [제어 문자를 ASCII] [1] ',' 를 통해 그들을 삽입하십시오 &lt kbd>;;;; v&lt 비활성으로 CTRL&lt /kbd&gt &lt kbd&gt /kbd>;;;;;;; - key-&lt &lt kbd&gt CTRL&lt /kbd&gt &lt kbd&gt /kbd&gt .&lt br/>;;; 배시 '또는' 에서 다른 유닉스 / 리눅스 셸 그냥 <;;;;;; - key-&lt kbd&gt &lt 입력하십시ᄃ오 kbd&gt CTRL&lt /kbd&gt /kbd>. ,,, M&lt kbd&gt /kbd&gt &lt 시도하시겠습니까 kbd&gt CTRL&lt &lt /kbd&gt. 그 뒤,, bash, 동일합니까 &lt kbd&gt ENTER&lt /kbd&gt 깨닫게 된다는 등 리눅스 시스템에 사용할 경우에도 쉘로 지정하십시오. 선 제한되지 않은 줄 바꿈.

39 의 literal& 삽입하려면 bash, 그들과 함께 <;;;;; v&lt 프레펜딩 kbd&gt CTRL&lt /kbd&gt &lt kbd&gt /kbd>; 또 작동합니까.

종료기 bash:

echo ^[[33;1mcolored.^[[0mnot colored.

이 두 '에서는 ANSI 이스케이프 시퀀스를 삽입하십시오 ^ [' & # 39 의 통해 &lt, kbd&gt, CTRL&lt, /kbd&gt, <;;;;;;; /kbd&gt kbd&gt v&lt /kbd&gt &lt kbd&gt ESC&lt.

,,, /Kbd&gt CTRL&lt kbd&gt &lt 수도 있습니다,,, &lt kbd&gt v&lt /kbd&gt &lt kbd&gt CTRL&lt /kbd&gt <;;;;;;; ENTER&lt kbd&gt m&lt /kbd&gt &lt kbd&gt 부여하느뇨 /kbd&gt 있는 이 있습니다.

bash: $'\r': command not found

'나' \r 위에서? :&gt.

이 목록은 완료하십시오 [제어 문자를 ASCII] [1] 에서 ASCII 심볼 테이블, 즉 다른 제어 문자를 삽입할 수 있으며,,, /kbd&gt CTRL&lt kbd&gt &lt 통해 비활성으로 싸이도테르미나르 콘솔 / / 키 (하하), 찾을 수 없다. 반면, 대부분의 다른 언어로 표현할 수 있는 C # 39, & # 39 옥탈칩을 코드를 사용하여 일반적으로 이러한 characters&;.

정말 알고 싶어 하는 경우 진저한테 비롯됩니다. http://www.linusakesson.net/programming/tty/. &lt br/>; 하지만 이 가장 두려워 이 내용에 대한 링크를 발견한 것입니다. 호세마리아 신부의 길.

  • TL; DR *

일반적으로 'foo' = '\n' 및 '표시줄에는' = '\r'.

[1]: http://www.cs.tut.fi/ ~ jkorpela/chars/c0.html

해설 (4)

다음을 사용해야 합니다.

:%s/,/^M/g

'^M` 문자를 얻으려면 Ctrl v 를 누른 다음 Enter

해설 (1)

r`이 여기서 작업을 수행합니다.

해설 (0)

Windows 에서 함께 사용하여,,, kbd&gt 비활성으로 &lt kbd&gt Ctrl&lt /kbd&gt +&lt Q&lt /kbd>; ,,, 대신 &lt kbd&gt Ctrl&lt /kbd&gt +&lt kbd&gt V&lt /kbd>;

해설 (0)

그동안 이 문제에 대한 가장 괜찮게 받을시간은 table: 되지만 운행에서어떠한 생쥐라. https://stackoverflow.com/a/12389839/962394.

따라서 새로운 표현:

사용해야 할 때 사용할 수 있는 '\r' 선 급지가 (ascii '0x0a' unix 줄 바꿈) 에 대한 것이 아니라, regex 는 일반적으로 교체품을 교체품 - 계속 사용할 수 있다 '' \n 합니다 특유의 선 급지가 및 '\r' 에 대해 케리지리턴.

이 때문에 '\n' 의 의미로 사용되는 비활성으로 교체품을 모두 이 문자 (ascii '0x00'). 이미 '대신' \n '\0 전무했던 것으로 할 수 있다' '선' 을 사용할 수 있지만, 일반적인 확보됨 급지가 \0 이미 의미가 큰 regex 교체품을 도왔으매 '\n'. 또한 '에서' \n '를 할 줄 바꿈 shift+ctrl 업그레이드됨 단순화표현 더 \r' (있는 regex 는 ascii 문자, 0x0d 패턴화합니다 케리지리턴 '').

&lt pre>; 문자를 ascii 코드 c 나타내줍니다 regex 일치시킵니다 교체품을 regex

  • +-+-+-+ - 모두 0x00 \0 \0 \n 줄 바꿈 (unix 줄 바꿈) 0x0a \n \n \r &amp unknown&amp, gt, 0x0d \r 케리지리턴 \r lt;; &lt /pre>;

NB: 한 때 '^ M' (ctrl v ctrl m linux) 로 사용되는 삽입물의 개행 문자 대신 다른 regex 교체품을 케리지리턴 주었습니다 (그냥 노력은 한 것 같습니다).

또한 비활성으로 불지옥으 파일로 변환할 때 절약합니다 줄 바꿈 문자를 바탕으로 줄 수 있는 파일 형식 설정값과 중요하지 않다.

해설 (0)

Eclipse 를 포함할 수 있습니다 ^ M '자' 에서 선, 진실이며당신이 변환하려면 줄 바꿈.

:s/\r/\r/g
해설 (0)

는 다음과 같은 일을 한 다음 작동됨 대체하십시오 신앙이니라

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

위의 모든 다음 줄을 선 후 다시 다음 할말이다 (다음 바뀝니다 - Wiki 의 테이블 사용됩니다. 만약 텍스트 다음과 같습니다.

line1
line2
line3

바뀌고

line1
|-
line2
|-
line3
해설 (0)

내게 필요한 경우 전체 파일을 할 수 있는 것도 제안됩니다 에서 시도하시겠습니까 명령줄이

sed 's/\\n/\n/g' file > newfile
해설 (1)

그 답을 여기 협력했습니다 for me. 이를 통해 담당이잖아요

인용 - http://jaysonlorenzen.wordpress.com/2009/04/28/use-vi-editor-to-insert-newline-char-in-replace/

I have to do something else 및 기억할 수 없는 그리곤요 조회할 수 있다.

Vi 의 검색 및 교체 개행 문자를 삽입하려면 확신하느뇨 다음과 같습니다.

m/g :%s/look_for/replace_with ^ 위의 명령은 "look_for" 와 "replace_with\n" 이라는 단어를 모두 바꿀 수 있는 \n 마무리라뇨 줄 바꿈)

키 조합을 입력하시겠습니까 얻기 위해 "^ M", "ctl v" 그런후에도 (릴리스에는 모든 키) "enter" 키를 눌러.

해설 (0)