簡體   English   中英

emacs術語模式中的Unicode字符

[英]Unicode characters in emacs term-mode

我在正常的終端會話中使用ansi-term。 我傾向於在提示符下使用unicode字符來做類似根據所使用的源代碼控件類型設置尾隨字符的操作。

我使用字符“±”作為git存儲庫的提示。

在Emacs的ansi術語中,我的提示未呈現為unicode,而是顯示為“ \\ 302 \\ 261”。 顯示當前的編碼系統表明,該過程的輸入默認為utf-8-unix,但是我得到了原始二進制作為解碼輸出。 我可以按Cc RET p來更改編碼和解碼編碼系統。 我在啟動終端時如何自動設置空白? 我試圖添加到term-mode-hook來將緩沖區的編碼系統設置為無效。 我想我已經找到了我在term.el中尋找的內容,但是我不在乎調整發行版elisp,而且似乎添加了原始二進制文件來修復其他地方的錯誤。

編輯:最初不清楚。 我在為MacOS上的可可化Emacs 23.3下運行的ansi-term設置默認過程編碼系統時遇到問題。 Emacs本身不在終端中運行,我的終端在Emacs中運行。

以下為我工作:

(add-hook 'term-exec-hook
          (function
           (lambda ()
             (set-buffer-process-coding-system 'utf-8-unix 'utf-8-unix))))

ansi-term似乎忽略了default-process-coding-system變量,因此在執行我的shell之后,我不得不在本地對其進行設置。

在對term.el有了更好的了解term.el ,可以進行以下工作:

(defadvice ansi-term (after advise-ansi-term-coding-system)
    (set-buffer-process-coding-system 'utf-8-unix 'utf-8-unix))
(ad-activate 'ansi-term)

使用term-mode-hook嘗試此term-mode-hook已失敗,因為在term.el中, term-mode-hook在切換到終端緩沖區之前已被調用,因此set-buffer-process-coding-system由於缺少與之關聯的進程而中斷緩沖區。

嘗試

(set-terminal-coding-system 'utf-8-unix)

那是Cx RET t而不是Cx RET p


那么Cx RET p幫助嗎? 除非Ch v default-process-coding-system(utf-8-unix . utf-8-unix)嘗試

(setq default-process-coding-system '(utf-8-unix . utf-8-unix))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM