我在寫一個配置文件,我需要定義過程是否需要一個Windows格式文件或unix格式文件。我有一份預期文件的副本 - 有沒有一種方法可以檢查它是否使用\ n或\ r \ n而不退出emacs?確定Emacs中的行終止符
4
A
回答
7
如果在Unix上打開文件時在模式行上顯示(DOS),則行結束符爲Windows風格。如果它在Windows上打開文件時說(Unix),則行結束符是Unix樣式。
從Emacs的22.2手冊(節點:模式線):
如果緩衝器的文件使用 回車換行,結腸 改變到任何一個反斜槓(「\」)或 「( DOS)「,具體取決於操作系統 。如果文件僅使用回車符 ,則冒號指示符 將更改爲正斜槓 ('/')或'(Mac)'。在某些系統上,對於使用換行符 行分隔符的文件,Emacs將顯示「(Unix)」而不是 冒號。
這裏是一個函數,–我認爲–演示瞭如何從elisp的什麼Emacs的已確定爲行結尾的類型檢查。如果它看起來非常複雜,可能就是這樣。
(defun describe-eol()
(interactive)
(let ((eol-type (coding-system-eol-type buffer-file-coding-system)))
(when (vectorp eol-type)
(setq eol-type (coding-system-eol-type (aref eol-type 0))))
(message "Line endings are of type: %s"
(case eol-type
(0 "Unix") (1 "DOS") (2 "Mac") (t "Unknown")))))
0
使用find-file-literally在emacs中打開文件。如果行末尾有^ M符號,它需要一個Windows格式的文本文件。
0
以下的elisp函數將返回nil
如果沒有"\r\n"
終止出現在一個文件中(否則返回第一次出現的點)。你可以把它放在你的.emacs
中,並用M-x check-eol
來稱呼它。
(defun check-eol (FILE)
(interactive "fFile: ")
(set-buffer (generate-new-buffer "*check-eol*"))
(insert-file-contents-literally FILE)
(let ((point (search-forward "\r\n")))
(kill-buffer nil)
point))
2
如果使用hexl模式(M-x hexl-mode),則可以看到行結束字節。
相關問題
- 1. emacs中的串行終端
- 2. 更改行終止符
- 3. 批量插入 - 用於UNIX文件的行終止符+「\ l」行終止符
- 4. 確定終止進程的PID
- 5. 正確的行爲,儘管沒有空字符串終止?
- 6. 其父終止確保QProcess中終止的QThread
- 7. emacs的鍵綁定不會在終端
- 8. 終止字符串
- 9. 終止符參考
- 10. 空終止符\ 1?
- 11. bash運行與&符號終止程序
- 12. Emacs:確定文件中的位置
- 13. 如何檢查Linux進程以確定進程何時/何時終止/終止?
- 14. Bresenham行不終止
- 15. 在Emacs中立即終止緩衝緩衝區
- 16. 什麼「終止字符」將通常確保後續的JavaScript將運行?
- 17. 是終止程序終止符的指示
- 18. 閱讀沒有行終止符的文件的第一行
- 19. 多個emacs終端
- 20. ORA-01756:引用的字符串沒有正確終止
- 21. 引用的字符串沒有正確終止
- 22. 何時使用術語「定界符」,「終止符」和「分隔符」
- 23. (MAC)終端確定運行命令
- 24. 的Python:正確終止工作線程
- 25. base64編碼空終止符
- 26. 替代字符串終止
- 27. Byte'\ x09'終止字符串?
- 28. Perl NULL終止字符串
- 29. 空終止字符串
- 30. 終止文本字符
這假設你沒有在Windows上運行。在那裏,modeline將是\ for \ r \ n或者(Unix)\ n。 – cjm 2008-10-24 18:20:24
OP當然需要一個編程解決方案,而不是視覺檢查模式線? – 2008-10-24 20:51:27
不!想要一個視覺的,雖然elsip很高興有。 – gone 2009-03-05 21:50:49