소스 제어에 Git을 사용하는 경우 다른 방법으로 접근 할 수 있습니다. 여기 에 대한 답변에서 영감을 얻어 gitattributes 파일 에 사용할 필터를 직접 작성했습니다 .
이 필터를 설치하려면 필터를 noeol_filter
다른 곳에 저장 $PATH
하고 실행 가능하게 한 후 다음 명령을 실행하십시오.
git config --global filter.noeol.clean noeol_filter
git config --global filter.noeol.smudge cat
자신 만의 필터 사용을 시작하려면 다음 줄을 입력하십시오 $GIT_DIR/info/attributes
.
*.php filter=noeol
이렇게하면 .php
Vim이 무엇을하든 eof에서 줄 바꿈을하지 않아도 됩니다.
그리고 지금, 스크립트 자체 :
#!/usr/bin/python
# a filter that strips newline from last line of its stdin
# if the last line is empty, leave it as-is, to make the operation idempotent
# inspired by: /programming/1654021/how-can-i-delete-a-newline-if-it-is-the-last-character-in-a-file/1663283#1663283
import sys
if __name__ == '__main__':
try:
pline = sys.stdin.next()
except StopIteration:
# no input, nothing to do
sys.exit(0)
# spit out all but the last line
for line in sys.stdin:
sys.stdout.write(pline)
pline = line
# strip newline from last line before spitting it out
if len(pline) > 2 and pline.endswith("\r\n"):
sys.stdout.write(pline[:-2])
elif len(pline) > 1 and pline.endswith("\n"):
sys.stdout.write(pline[:-1])
else:
sys.stdout.write(pline)