편집기에서 줄 바꿈 및 캐리지 리턴 확인


180

누구든지 Linux에서 줄 바꿈 및 캐리지 리턴을 볼 수있는 텍스트 편집기를 알고 있습니까? Vim이이 기능을 지원합니까?


1
참고 : 경우에 따라 개행 ($) 및 캐리지 리턴 (^ M)이 많은 색상 구성표에 숨겨져 있으며 퍼티를 사용하여 ssh에 숨길 수도 있습니다.
바네사 산체스

1
OP 선택한 답변을 재고해야한다고 생각합니다. 선택한 답변이 작동하지 않습니다. 그러나 CaptSaltyJack 답변이 잘 작동합니다.
JavaSheriff

OP 둘 다 보여줄 것은 @arno의 솔루션입니다. 3 가지 파일 형식을 모두 무작위로 사용하는 파일이 있기 때문에 두 가지를 모두보아야했습니다 ... 그리고 arno의 해결책은 작동합니다
Wayne Walker

답변:


139

:set listVim에서 공백이 표시됩니다. 줄 끝은 ' $' 로 표시 되고 캐리지 리턴은 일반적으로 ' ^M' 로 표시됩니다 .



254
잘못된 문자 (CR)를 :set list표시하지 않습니다 ^M. -bvi / vim에 옵션을 제공하면 작동합니다. 또는 vim :e ++ff=unix
이로

15
참고로 "목록 설정"모드를 끄려면:set nolist
Tomofumi

@Tomofumi 당신의 perposition와 편집을 환영합니다!
Pipo

1
잘못된 답변. : set 목록에는 ^ M 문자 (CR)가 표시되지 않습니다. vi / vim에 -b 옵션을 사용하면 작동합니다.
nanosoft

265

공식 답변에 동의하지 않으려면 :

:set list것입니다 하지 ^ M 문자 (CR을)를 보여줍니다. vi / vim에 -b 옵션을 제공하면 작동합니다. 또는 vim이로드되면을 입력하십시오 :e ++ff=unix.


4
구문입니다. :help edit보여줍니다 e[dit]! [++opt] [+cmd]. 그리고 [++ opt] 인수는 'fileformat'[..] 값을 강제하는 데 사용될 수:help ++e 있다고 말합니다 .
dennis

19
명확히하기 위해 :set list개행 ( $), :e ++ff=unixCR ( ^M)을 보여줍니다 . 당신은 모두를보고 싶다면 :set list다음:e ++ff=unix
Yibo 양

5
@dennis의 주석을 확장하기 위해 :set ff=unixVim에게 줄 끝을 유닉스 스타일 로 변경 하도록 (파일 형식 설정의 일부로) ^ M 문자가 더 이상 존재하지 않으며 표시되지 않도록 지시 합니다. 실제로 내용을 변경하지 않고 파일 :e ++ff=unix형식을 강제 설정하도록 지시합니다 unix. 따라서 vim은이 파일을 Unix 파일처럼 읽으며 CR 문자를 추가 문자로보고 ^ M으로 표시합니다.
sundar-복원 모니카

2
여전히 vim어떤 이유로 든 나를 위해 작동하지 않습니다 ... 나는 -b옵션도 :e ++ff=unix
안될

3
좋습니다 : e ++ ff = unix가 작동했습니다. 이제 어떻게 끄나요?
Croo

78

VI는 x0A다음 줄에 후속 텍스트를 보여줌으로써 개행 (LF 문자, 코드 )을 보여줍니다.

-b이진 모드 에는 스위치를 사용하십시오 . 예를 들어 vi -b filename또는 vim -b filename --.

그런 다음 x0DUnix 스타일 파일에서 일반적으로 사용되지 않는 CR 문자 ( )를 문자로 표시 합니다 ^M.


나는 주로 Unix환경 에서 일하기 때문에 일반적으로 줄 끝을 볼 필요가 없습니다 . 그러나 파일에 파일이 있으면 Windows 유형 줄 끝에 대해 ​​경고하고 싶습니다. 것 vi -b filename또는 :set binary단지 보여 ^M그것은 창 형식 파일과 달리 다른 라인 엔딩 인 경우?
alpha_989

31

그냥 이유를 명확히하기 위해 :set listCR의로 표시되지 않습니다 ^M하지를 e ++ff=unix:set list와는 아무 상관이 없습니다 ^M들 '.

내부적으로 Vim 파일을 버퍼로 읽어 들일 때 모든 줄 끝 문자를 자체 표현으로 바꿉니다 (이를 호출합니다 $). 어떤 문자를 제거해야하는지 결정하기 위해 먼저 파일에 어떤 형식 줄 끝이 저장되어 있는지 감지합니다. 단지 CRLF가있는 경우 '\r\n'또는 유일한 CR '\r'또는 유일한 LF '\n'라인 끝 문자, 다음은 'fileformat'로 설정 dos, mac그리고 unix각각.

list옵션이 설정되어, 빔 표시 $문자 줄 바꿈는 상관없이 발생했을 때 fileformat감지 된 옵션을 선택합니다. 자체 줄 바꿈 표현을 사용하며 이것이 표시됩니다.

이제 디스크에 버퍼를 때 Vim fileformat은 감지 된 옵션 에 따라 줄 끝 문자를 삽입하여 본질적으로 모든 내부 $문자를 적절한 문자 로 변환합니다 . 그런 fileformat일이 발생하면 내부 줄 바꿈 대신 unix\n수 있습니다.

트릭은 Vim이 dos인코딩 된 파일을 unix하나로 읽도록 강제하는 것입니다. 순 효과는 모두 제거하는 것입니다 \n의 떠나는 \r그대로의 '를하고로 표시 ^M하여 버퍼에의. 설정 :set list하면 내부 줄 끝이로 표시됩니다 $. 결국 인코딩 된 줄 바꿈 ^M$대신에 표시 dos됩니다.

또한의 표시와 :set list는 아무런 관련이 없습니다 ^M. 당신은 자신 (메이크업은 당신이 사용 중지하여 확인할 수 있습니다 list사용하여 하나의 CR을 삽입하여 첫 번째 옵션을) CTRL-V다음 Enter삽입 모드입니다. 디스크에 버퍼를 쓴 후 다시 열면 옵션이 0으로 설정되어 ^M있어도 볼 수 있습니다 list.

파일 형식에 대한 자세한 내용은 http://vim.wikia.com/wiki/File_format 또는 :help 'fileformat'Vim 을 입력하여 찾을 수 있습니다 .


11

다음 명령을 시도하십시오.

: 바이너리 설정

VIM에서는 "-b"명령 행 옵션을 사용하는 것과 동일한 작업을 수행해야합니다. 이 파일을 시작 (예 : .vimrc) 파일에 넣으면 항상 자동으로 배치됩니다.

많은 * nix 시스템에는 파일을 처리하고 의심되는 줄 끝 문제를 해결할 수있는 "dos2unix"또는 "unix2dos"명령이 있습니다. 줄 끝에 문제가 없으면 파일이 변경되지 않습니다.


불행히도 내 시스템 (Ubuntu 16.04)은와 set binary다릅니다 vim -b filename.py. 왜 그런지 알아? 나는 확인했고 help당신이 말하는 것이 일반적으로 올바른 것 같습니다. 이것이 왜 그런지 어떻게 알 수 있습니까?
alpha_989

:e ++ff=unix을 보여 않는 ^M정확하고 내가 사용하는 때를 표시하지 않습니다unix형식 파일을 . 그래서 지금 문제가 해결 된 것 같습니다 ...
alpha_989

6

명령 목록을 실행하기 위해 .vimrc 파일을 편집하는 것이 좋습니다. 다음과 같이 .vimrc 파일을 편집하십시오.

cat >> ~/.vimrc <<EOF
set ffs=unix
set encoding=utf-8
set fileencoding=utf-8
set listchars=eol:¶
set list
EOF

vim을 실행할 때 .vimrc에 대한 명령이 실행되며 다음 예제를 볼 수 있습니다.

My line with CRLF eol here ^M¶

2

로 사용 cat하고 -A당신은 새로운 라인을 볼 수있는 $탭으로,^I
cat -A myfile


0

gedit를 사용하여 줄 바꿈을 볼 수 있습니다 편집기를 .

먼저 설치하지 않은 경우 :

sudo apt-get install gedit

이제 gedit 플러그인을 설치하십시오 :

sudo apt-get install gedit-plugins

Spaces 플러그인 그리기 를 선택 하고 환경 설정을 입력 한 다음 새 줄 그리기를 선택하십시오.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

VSCode 를 사용하면 줄 끝 확장을 설치할 수 있습니다 .

Sublime Text 3 에는 줄 끝을 표시하고 임의의 줄 끝 유형을 삽입 할 수있는 RawLineEdit 이라는 플러그인 이 있습니다.

shift + ctrl + p 시작하려면 플러그인 이름을 입력하고 줄 끝 표시를 토글하십시오.

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