나는 각을 대체하기 위해 노력하고있어 ,
새로운 라인으로 현재 파일 :
:%s/,/\n/g
그러나 실제 줄 바꿈 대신 ^@
처럼 보이는 것을 삽입합니다. 파일이 DOS 모드에 있지 않습니다.
어떻게 해야 하나요?
나처럼 궁금한 점이 있으면 \ra가 Vim의 줄 바꿈인 이유를 확인하세요. 또한.
질문자 :Vinko Vrsalovic
나는 각을 대체하기 위해 노력하고있어 ,
새로운 라인으로 현재 파일 :
:%s/,/\n/g
그러나 실제 줄 바꿈 대신 ^@
처럼 보이는 것을 삽입합니다. 파일이 DOS 모드에 있지 않습니다.
어떻게 해야 하나요?
나처럼 궁금한 점이 있으면 \ra가 Vim의 줄 바꿈인 이유를 확인하세요. 또한.
\n
대신 \r
사용하십시오. \n
대체하면 텍스트에 널 문자가 삽입됩니다. 개행을 얻으려면 \r
사용하십시오. 그러나 개행을 검색 할 때 \n
사용합니다. 이 비대칭은 \n
과 \r
이 약간 다른 일을 하기 때문입니다 .
\n
은 줄 끝(줄 바꿈) \r
은 캐리지 리턴과 일치합니다. 반면에, 대체에서 \n
은 널 문자를 삽입하는 반면 \r
은 개행을 삽입합니다(보다 정확하게는 입력 CR 로 처리됨). 다음은 Vim 명령줄 기능을 사용하여 이를 설명하기 위한 작은 비대화형 예입니다(즉, 다음을 복사하여 터미널에 붙여넣어 실행할 수 있음). xxd
는 결과 파일의 16진 덤프를 보여줍니다.
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를 삽입했습니다.
비결은 다음과 같습니다.
먼저 특수 문자(예: 개행)와 패턴 일치를 허용하도록 Vi(m) 세션을 설정합니다. 이 줄을 .vimrc 또는 .exrc 파일에 넣는 것이 좋습니다.
:set magic
다음을 수행합니다.
:s/,/,^M/g
^M
문자를 얻으려면 Ctrl + V 를 입력 하고 Enter 키를 누르십시오. Windows에서 Ctrl + Q 를 수행 하고 Enter . 내가 이것들을 기억할 수 있는 유일한 방법은 그것들이 얼마나 의미가 없는지 기억하는 것입니다.
A: 개행을 나타내는 데 사용할 수 있는 최악의 제어 문자는 무엇입니까?
B:
q
(보통 "종료"를 의미하기 때문에) 또는v
중 하나입니다. 실수로 Ctrl + C 를 입력하고 편집기를 죽이기 쉽기 때문입니다.A: 그렇게 하세요.
s/foo/bar
구문에서 \r
및 \n
은 컨텍스트에 따라 다른 의미를 갖습니다.
foo
위해:
\r
== "캐리지 리턴"( CR
/ ^M
)
\n
== Linux/Mac에서는 "줄 바꿈"( LF
CRLF
와 일치합니다.
bar
:
\r
== Linux/Mac LF
, Windows CRLF
\n
== "널 바이트"( NUL
/ ^@
)
Windows 환경에서 처음 생성되고 업로드된(예: FTP/SFTP) Linux(예: 웹 서버)에서 파일을 편집할 때 - vim에 표시되는 ^M
은 Linux에서 번역하지 않는 CR
줄 바꿈을 나타 LF
만 사용합니다.
NUL
== 0x00 == 0 == Ctrl + @ == ^@
vim에 표시됨
LF
== 0x0A == 10 == Ctrl + J
CR
== 0x0D == 13 == Ctrl + M == ^M
이 vim에 표시됨
다음은 ASCII 제어 문자 목록입니다. Ctrl + V , Ctrl + ---key--- 를 통해 Vim에 삽입하십시오.
Bash 또는 다른 Unix/Linux 셸에서는 Ctrl + ---key--- 를 입력하기만 하면 됩니다.
Bash에서 Ctrl + M 을 시도하십시오. Linux 시스템이 줄 구분을 위해 줄 바꿈을 사용하더라도 셸이 의미하는 바를 깨닫기 때문에 Enter 키 를 누르는 것과 같습니다.
bash에 리터럴을 삽입하려면 Ctrl + V를 앞에 추가하는 것도 작동합니다.
Bash에서 시도:
echo ^[[33;1mcolored.^[[0mnot colored.
이것은 ANSI 이스케이프 시퀀스를 사용합니다. Ctrl + V , Esc 를 통해 두 개의 ^[
삽입하십시오.
Ctrl + V , Ctrl + M , Enter 를 시도할 수도 있습니다. 그러면 다음이 제공됩니다.
bash: $'\r': command not found
\r
을 기억하십니까? :>
이 ASCII 제어 문자 목록은 Ctrl 키(하하)를 통해 콘솔/의사 터미널/Vim에 삽입된 제어 문자를 찾을 수 있다는 점에서 완전한 ASCII 기호 테이블과 다릅니다.
반면 C 및 대부분의 다른 언어에서는 일반적으로 이러한 '문자'를 나타내기 위해 8진수 코드를 사용합니다.
이 모든 것이 어디서 왔는지 정말로 알고 싶다면: The TTY demystified . 이것은 이 주제에 대해 접하게 될 최고의 링크이지만 주의하십시오. 드래곤이 있습니다.
TL;DR
일반적으로 foo
= \n
및 bar
= \r
입니다.
다음을 사용해야 합니다.
:%s/,/^M/g
^M
문자를 얻으려면 Ctrl + v 를 누른 다음 Enter를 누르십시오 .
\r
여기에서 작업을 수행할 수 있습니다.
Windows의 Vim에서는 Ctrl + V 대신 Ctrl + Q 를 사용합니다.
이것은 내가 생각하는 방식에 대한 최선의 답변이지만 테이블에서 더 좋았을 것입니다.
그래서, 다시 말해서:
정규식 대체에서 줄 바꿈(ASCII 0x0A
, Unix 개행)을 사용하려면 \r
을 사용해야 하지만 이는 대체에 고유합니다. 일반적으로 줄 바꿈 \n
을, 캐리지에는 \r
반품.
0x00
)를 의미하기 위해 대체에 \n
을 사용했기 때문입니다. \0
대신 줄 바꿈에 대한 일반적인 사용을 위해 \n
을 해제할 것으로 예상했을 수 \0
은 정규식 대체에서 이미 의미가 있으므로 \n
으로 이동했습니다. 따라서 개행을 \n
에서 \r
(정규식 패턴에서 캐리지 리턴 문자 ASCII 0x0D
)으로 이동합니다.
캐릭터 | 아스키 코드 | C 표현 | 정규식 일치 | 정규식 대체 -------------------------+------------+----------- -------+-------------+------------------------ 없음 | 0x00 | \0 | \0 | \N 줄 바꿈(Unix 개행) | 0x0a | \n | \n | \NS 캐리지 리턴 | 0x0d | \r | \r | <불명>
주의: ^M
( Linux의 경우 Ctrl + V Ctrl + M )은 다른 사람들이 조언한 대로 캐리지 리턴이 아닌 정규식 대체에 사용될 때 개행을 삽입합니다(방금 시도했습니다).
또한 Vim은 파일 형식 설정에 따라 파일에 저장할 때 줄 바꿈 문자를 번역하므로 문제가 혼동될 수 있습니다.
Eclipse 에서 ^M
문자를 한 줄에 포함할 수 있으며 이를 개행 문자로 변환하려고 합니다.
:s/\r/\r/g
그러나 대체해야 하는 경우 다음이 작동합니다.
:%s/\n/\r\|\-\r/g
위에서 모든 다음 라인은 다음 라인으로 대체되고 |-
그리고 다시 새 라인으로 대체됩니다. 이것은 위키 테이블에서 사용됩니다.
텍스트가 다음과 같을 경우:
line1 line2 line3
로 변경됩니다.
line1 |- line2 |- line3
나를 위해 일한 대답은 다음과 같습니다. 이 사람에게서:
----인용 vi 편집기를 사용하여 대체에 개행 문자를 삽입하십시오.
해야 할 일이 있고 기억이 나지 않아 찾아봐야 하는 또 다른 일이 있습니다.
vi에서 검색 및 바꾸기에 개행 문자를 삽입하려면 다음을 수행하십시오.
:%s/look_for/replace_with^M/g
위의 명령은 "look_for"의 모든 인스턴스를 "replace_with\n"(\n은 개행을 의미함)으로 바꿉니다.
"^M"을 얻으려면 Ctrl + V 키 조합을 입력한 다음(모든 키에서 손을 떼고) Enter 키를 누릅니다.
전체 파일에 대해 수행해야 하는 경우 명령줄에서 시도할 수도 있다고 제안했습니다.
sed 's/\\n/\n/g' file > newfile
출처 : http:www.stackoverflow.com/questions/71323/how-to-replace-a-character-by-a-newline-in-vim
C# 자동 속성에 초기 값을 제공하는 가장 좋은 방법은 무엇입니까? (0) | 2021.12.02 |
---|---|
Git 리포지토리에서 파일을 삭제하려면 어떻게 해야 합니까? (0) | 2021.12.02 |
사용자가 목록 항목 위로 마우스를 가져갈 때 커서를 손으로 변경하는 방법은 무엇입니까? (0) | 2021.12.01 |
"???!???!" 연산자는 C에서 어떤 용도인가요? (0) | 2021.12.01 |
일광 절약 시간 및 표준 시간대 모범 사례 [닫힘] (0) | 2021.12.01 |