emacs에서 ^ M 숨기기
줄 끝에 ^ M (control-M)이있는 로그 파일을 읽어야하는 경우가 있습니다. 이를 제거하기 위해 전역 교체를 수행 할 수 있지만 로그 파일에 더 많은 내용이 기록되고 물론 모두 다시 돌아옵니다.
unix 스타일 또는 dos 스타일 end-of-line 인코딩 설정은 큰 차이가없는 것 같습니다 (그러나 unix 스타일이 기본입니다). 미정 (unix | dos) 코딩 시스템을 사용하고 있습니다.
나는 Windows에서 log4net이 만든 로그 파일을 읽고 있습니다 (물론 log4net 이이 성가심의 유일한 원인은 아니지만).
힌트가 있습니까?
(defun remove-dos-eol ()
"Do not show ^M in files containing mixed UNIX and DOS line endings."
(interactive)
(setq buffer-display-table (make-display-table))
(aset buffer-display-table ?\^M []))
Johan Bockgård의 솔루션. 여기 에서 찾았습니다 .
최신 버전의 emacs는 UNIX와 DOS 줄 끝을 모두 처리하는 방법을 알고 있으므로 ^ M이 파일에 나타나면 파일에 둘 다 혼합되어 있음을 의미합니다. 이러한 혼합이있는 경우 emacs는 기본적으로 UNIX 모드로 설정되므로 ^ M이 표시됩니다. 실제 수정은 일관된 줄 끝을 사용하도록 파일을 만드는 프로그램을 수정하는 것입니다.
이건 어떤가요?
C-x RET c dos RET C-x C-f FILENAME RET
두 줄로 된 파일을 만들었고 두 번째 줄에는 캐리지 리턴이 있습니다. Emacs는 Unix 코딩으로 파일을 열 것이며 코딩 시스템 전환은 아무 일도하지 않습니다. 그러나 universal-coding-system-argument
위의 작동합니다.
로그 파일을보고 실제로 바꾸지 않고 단순히 ^ M을 숨기려면 Drew Adam의 하이라이트 확장 을 사용하면됩니다.
elisp 코드를 작성하거나 키보드 매크로를 만들어 다음을 수행 할 수 있습니다.
select the whole buffer
hlt-highlight-regexp-region
C-q C-M
hlt-hide-default-face
먼저 ^ M을 강조 표시 한 다음 숨 깁니다. 다시 원한다면`hlt-show-default-face '를 사용하세요
파일이 사용하는 라인 코딩 시스템을 Unix 형식으로 변경할 수 있다고 생각합니다.
C-x RET f UNIX RET
그렇게하면 모드 행이 "(Unix)"라는 단어를 추가하도록 변경되고 모든 ^ M이 사라집니다.
Edric의 대답은 더 많은 관심을 끌 것입니다. Johan Bockgård의 솔루션은 ^ M이 보이지 않게 만드는 한 포스터의 불만을 해결하지만 근본적인 문제를 가릴 뿐이며 Unix와 DOS 라인 엔딩의 추가 혼합을 권장합니다.
적절한 해결책은 모든 줄 끝을 DOS (또는 경우에 따라 Unix)로 M-x replace-regexp
바꾸는 전역 작업을 수행하는 것입니다. 그런 다음 파일을 닫았다가 다시 열면 ( 충분한 지 확실하지 않음 ) ^ M이 모두 표시되지 않거나 모두 사라집니다.M-x revert-buffer
Ctrl-M ( ^M
) 문자 의 표시 테이블 항목을 변경하여 공백으로 표시하거나 완전히 사라지도록 (공백) 할 수 있습니다. 영감을 얻으 려면 라이브러리 pp-c-l.el
( Pretty Control-L ) 의 코드를 참조하십시오 . ^L
임의의 방식으로 문자를 표시합니다 .
편집 됨 : 죄송합니다. @binOr가 이미이 방법을 언급했음을 알았습니다.
이것을 .emacs에 넣으십시오.
(defun dos2unix ()
"Replace DOS eolns CR LF with Unix eolns CR"
(interactive)
(goto-char (point-min))
(while (search-forward "\r" nil t) (replace-match "")))
이제 dos2unix
모든 ^M
문자를 간단히 호출 하고 제거 할 수 있습니다 .
dos2unix, unix2dos (현재 tofrodos )를 사용하는 것은 어떻습니까?
^M
Gnus에서받은 메일에서 s 를 발견 하면 W c
(wash CRs)를 사용하거나
(setq gnus-treat-strip-cr t)
sudeepdino008의 답변이 저에게 효과가 없었습니다 (그의 답변에 대해 언급 할 수 없었으므로 내 답변을 추가해야했습니다.).
이 코드를 사용하여 수정할 수있었습니다.
(defun dos2unix ()
"Replace DOS eolns CR LF with Unix eolns CR"
(interactive)
(goto-char (point-min))
(while (search-forward (string ?\C-m) nil t) (replace-match "")))
binOr처럼 Windows의 % APPDATA % .emacs.d \ init.el 또는 구성 위치에 이것을 추가하십시오.
;; Windows EOL
(defun hide-dos-eol ()
"Hide ^M in files containing mixed UNIX and DOS line endings."
(interactive)
(setq buffer-display-table (make-display-table))
(aset buffer-display-table ?\^M []))
(defun show-dos-eol ()
"Show ^M in files containing mixed UNIX and DOS line endings."
(interactive)
(setq buffer-display-table (make-display-table))
(aset buffer-display-table ?\^M ?\^M))
(add-hook 'text-mode-hook 'hide-dos-eol)
참조 URL : https://stackoverflow.com/questions/730751/hiding-m-in-emacs
'IT TIP' 카테고리의 다른 글
Angular 2의 자식 구성 요소에서 부모 구성 요소 속성 업데이트 (0) | 2020.12.29 |
---|---|
'router-outlet'은 알려진 요소가 아닙니다. (0) | 2020.12.29 |
정적 메서드는 스레드로부터 안전합니까? (0) | 2020.12.29 |
fopen에서 r과 rb의 차이점은 무엇입니까 (0) | 2020.12.29 |
리플렉션 (C #)을 사용하여 메서드가 재정의되었는지 감지 (0) | 2020.12.29 |