輸入特殊字元後,Matlab 變得“瘋狂”
我正在使用一台執行 Ubuntu 的電腦,我通過 ssh 連接到一台 RedHat 機器,在該機器上我在命令行模式下使用 Matlab (matlab -nodesktop)。Matlab 版本為
7.10.0.499 (R2010a)
.當我鍵入任何會產生“特殊字元”的鍵時,就會出現我的問題,例如
ñ
,á
等…我設法通過將此別名設置為 matlab 來解決這個問題:
alias mat 'xmodmap -e "keycode 47 = Escape" -e "keycode 34 = Escape"; matlab -nodesktop; setxkbmap;'
…但是此解決方案在全域範圍內進行了這些更改,並且我無法在任何其他應用程序(包括終端、瀏覽器等)中鍵入這些字元(只要 matlab 正在執行)。
我讀到這是這個版本的 Matlab 的一個問題,但在這種情況下,出現了一個新問題:如果我在連接到其他機器的終端 (xterm) 中使用 xmodmap,為什麼這些更改會全域傳播到我的會話?
檢查本地和遠端機器上的區域設置是否匹配:
echo $LC_CTYPE
在本地終端和 ssh 會話中執行。如果它們不匹配,請使用LC_CTYPE
設置為正確值的 Matlab 重試。如果這不起作用,請嘗試使用export LC_CTYPE=C
或使用export LC_CTYPE=en_US
(在黑暗中拍攝,我不知道 Matlab 錯誤的性質)。如果您使用的是 UTF-8 語言環境,請嘗試使用 8 位語言環境,例如 latin1:
LC_CTYPE=en_US luit ssh redhat-host
如果擺弄語言環境沒有幫助,請嘗試更激進的方法:
stty istrip
在啟動 Matlab 之前在終端中執行。這會從您鍵入的字元中刪除第 8 位。當您輸入一個重音字母時,Matlab 將收到一個垃圾 ASCII 字元,但不會混淆它。請注意,除了切換到 latin-1 語言環境之外,您還應該執行此操作,例如en_US
; 在其他語言環境中,特別是在 UTF-8 中,亂碼可以是控製字元。有很多 stty 設置,但我想不出一個會導致非 ASCII 字元被忽略的設置。如果您嘗試使用
stty
,則可以使用stty sane
. 更改是終端本地的。