Vim은 일반적으로 <EOL>
원본 파일에 줄이있을 때만 마지막 줄을 씁니다 .
vim이 파일 끝에 항상 새 줄을 작성하는 방법 (파일이 바이너리가 아니고 아직없는 경우)?
eol
옵션을 테스트 했지만 예상대로 작동하지 않았습니다.
참조 : 텍스트 파일의 끝에서 끝 (end-of-line) 누락 보존 하지만 반대. 그리고 왜 파일이 줄 바꿈으로 끝나야합니까?
Vim은 일반적으로 <EOL>
원본 파일에 줄이있을 때만 마지막 줄을 씁니다 .
vim이 파일 끝에 항상 새 줄을 작성하는 방법 (파일이 바이너리가 아니고 아직없는 경우)?
eol
옵션을 테스트 했지만 예상대로 작동하지 않았습니다.
참조 : 텍스트 파일의 끝에서 끝 (end-of-line) 누락 보존 하지만 반대. 그리고 왜 파일이 줄 바꿈으로 끝나야합니까?
답변:
Vim은 버퍼에 최신 줄 바꿈을 표시하지 않지만 실제로 vim은 파일을 작성할 때 파일 끝에 EOL을 배치합니다. Unix 시스템의 텍스트 파일에 대한 표준이기 때문입니다. 이에 대한 자세한 정보는 여기를 참조하십시오 . 즉, vim에서 파일 끝에 새 줄이없는 것에 대해 걱정할 필요가 없습니다.
이 작은 실험을 통해이 동작을 확인할 수 있습니다. 터미널에서 다음을 실행하십시오.
$ vim test_test
문자를 입력하고 1
파일을 저장하십시오 :wq.
파일에 문자가 하나 밖에 없습니다. 실제로 :) 이제 파일 1
과 LF
문자가 있습니다. hexdump 유틸리티를 사용하여 확인하십시오.
$ hexdump test_test
0000000 31 0a
0000002
31
는 문자의 ASCII 코드이며 1
, 0a
비 인쇄 LF
문자의 ASCII 코드이며 UNIX의 경우 줄 끝의 코드를 이미 알고있을 수 있습니다.
그러나 파일 eol
끝에 기호 가없는 파일을 열면 어떻게 될까요? 그것도 확인해 보자. 마지막에 eol없이 파일을 만듭니다 (예 : 다음과 같이).
$ echo -n "1" > test_without_eol
그런 다음 다시 hexdump로 내부를 살펴 보겠습니다.
$ hexdump test_without_eol
000000 31
0000001
따라서 여기에는 eol
문자 가 없습니다 . 이 파일을 vim에서 엽니 다 :
$ vim test_without_eol
편집기 하단에 다음이 표시됩니다.
"test_without_eol" [noeol] 1L, 1C
이 파일을 저장하면 eol
문자가 자동으로 저장 됩니다.
파일의 끝을 정말로 볼 필요가 있다면. 이 명령을 사용해보십시오 :
:set listchars=eol:$
모든 eol
문자를 $
부호 로 표시합니다.
:set listchars=eol:$
빔은 파일로 열 경우 EOL를 생략 'binary'
하고'endofline'
(시 개방 바이너리 파일이 EOL을하지 않았거나 명시 적으로 옵션을 재설정 할 때) 옵션이 재설정됩니다. 다시 말해, Vim은 바이너리 파일에 대해 누락 된 EOL 만 존중합니다. 텍스트 파일의 경우 항상 (추가 된) EOL로 씁니다. (따라서 EOL없이 텍스트 파일을 유지하려면 PreserveNoEOL 플러그인 과 같은 솔루션이 필요한 이유 입니다.) 자세한 내용은에서 확인할 수 있습니다 :help 'endofline'
.
따라서 Vim이 자동으로 EOL을 작성하려면 파일을 이진이 아닌 파일로 열어야합니다 .
으로 알렉산더 언급, 빔은 그렇게 (특히과 혼란 그 이유는, EOF에서 EOL을 표시하지 않습니다 빈 / 빈 새로운 라인 , 또 다른 일이다) 따라서 실제로 저장 파일에있는 모든 시간을 기록합니다.
작동하는지 테스트하는 간단한 테스트는 다음과 같습니다.
$ printf foo > foo.txt
$ cat foo.txt
foo$ wc foo.txt
0 1 3 foo.txt
$ vim -cwq foo.txt
$ cat foo.txt
foo
$ wc foo.txt
1 1 4 foo.txt
EOL이 없을 때 쉘 프롬프트가 어떻게 작동하는지 주목하십시오 (다음 행과 혼합 됨). Vim으로 파일을 다시 저장하면 추가됩니다.
를 사용하여 wc
저장 전후에 줄, 단어 및 문자를 계산할 수 있으므로 실제로 변경되는 것을 볼 수 있습니다.