1. 程式人生 > >解決Ubuntu下Sublime Text 3無法輸入中文

解決Ubuntu下Sublime Text 3無法輸入中文

sublime很好用,但是ubuntu下不能輸入中文,這是一個很大的問題。不知道為什麼開發著一直也不解決,好在還是有高手在,總能找到方法。網上方法很多,但是也很亂,現在我將自己的經驗總結一下。

首先,我參考了好幾篇文章,都是蠻不錯的,先列出來:

我的方法

1.下載我們需要的檔案,開啟終端,輸入:

git clone https://github.com/lyfeyaj/sublime-text-imfix.git

2.將subl移動到/usr/bin/,並且將sublime-imfix.so移動到/opt/sublime_text/(sublime的安裝目錄)
終端輸入:

cd ~/sublime-text-imfix
sudo cp ./lib/libsublime-imfix.so /opt/sublime_text/
sudo cp ./src/subl /usr/bin/

3.用subl命令試試能不能啟動sublime,如果成功啟動的話,應該就可以輸入中文了。
終端輸入:

LD_PRELOAD=./libsublime-imfix.so subl

4.但是這樣子只能用上述命令列啟動才能輸入中文,我們需要更簡單的辦法,我選擇新建一個shell指令碼,很簡單,就一句話。
sublime新建檔案輸入:

#!/bin/bash
LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so subl

然後將檔案另存為sublime(注意:沒有後綴),並且放到/home資料夾。

5.至此,所有工作完成了。想要啟動,直接終端輸入:bash ~/sublime

,就可以啟動sublime,並且能夠輸入中文。

6.如果不需要輸入中文,直接按以前的方式開啟即可。建指令碼檔案的目的就是方便開啟能輸入中文的sublime。

說明

這只是一個權宜之計,完美的解決辦法還沒有,只能等sublime開發者更新。
網上所謂的完美解決,還是有問題,比如如果更改桌面快捷方式,那麼sublime的Browse Packages功能不能使用,當然,還有其他問題。為了正常使用,我就沒改。當然如果你中文輸入比較多,還是建議修改桌面快捷方式,畢竟那會方便很多,具體怎麼樣,自己取捨。

另外,輸入法不跟框,暫時無解啊。



文/Vaayne(簡書作者)
原文連結:http://www.jianshu.com/p/bf05fb3a4709
著作權歸作者所有,轉載請聯絡作者獲得授權,並標註“簡書作者”。 回覆

確實無法根治,LD_PRELOAD會影響sublime的子程序,就是外部呼叫,原因是gtk2和gtk3的版本衝突……這就是中文輸入的代價……官方也不修復一下

回覆

在你的方法下弄好啦,謝謝~
不過你最後把shell檔案放在/home下執行有點麻煩啊,直接放在/usr/bin裡豈不是更好?

回覆

MonsterOOF:  有個東西叫做快捷鍵,既然都用Linux了,想必也用鍵盤多於滑鼠了。Ubuntu下自定義一個快捷鍵,命令為subl,這樣子就相當於命令列啟動了。設定快捷鍵:設定——鍵盤——快捷鍵

 新增新回覆

我忘記是不是直接能輸入中文了,但之前直接點'desktop'圖示是不行的。看了你的文章,做了前面兩步有點疑惑,因為我安裝完的時候就提示我可以用'subl',並且當時我或許是可以中文輸入的(不記得了),但是進行到你的第三步,我確認可以在teminal輸入'subl'出來的sublime是可以中文輸入的,所以我到‘/usr/share/applications/‘裡面的Sublime建立的'.desktop’檔案,執行命令改成了‘subl’,直接點選也能中文輸入了

回覆

Vaayne:  做前面的步驟是因為我的安裝完成後不能直接從命令列啟動,如果可以啟動就不需要,後面是給啟動命令加個引數,確保那個外掛的執行。

 新增新回覆

按照第一個方法成功了,在沒有開啟sublime的情況下終端鍵入subl可以開啟支援中文的視窗。
我有一個方法跟大家分享一下,實現了用快捷鍵將當前的檔案用支援中文輸入的sublime開啟。前提是這個檔案格式沒有繫結其他build命令。
原理:利用sublime build執行命令:pkill subl && subl ‘檔案路徑’
參考:
//build檔案
{
"shell_cmd": "pkill subl && subl \"${file}\"",

"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",

"working_dir": "${file_path}"
}
注意: 按快捷鍵之前最好儲存一下開啟的檔案,畢竟是pkill。

回覆

所有方法都試了一遍,都失敗了

回覆

ERROR: ld.so: object '/opt/sublime_text/libsublime-imfix.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.

回覆

你好,我按照你的方法來做,第三步的時候可以開啟sublime,可是不能輸入中文

回覆

我安裝的build 3083 ,上述的方法我是按步做了,最終都不可以輸入中文 , :sob: 
問了一下同事他用的非3083 比其要低幾個版本,但是是3以上,他照做了可以輸入中文。
能否貢獻一下你的sublime安裝軟體。[email protected] 謝謝!

回覆

非常感謝您提供寶貴的經驗我的問題已經全部解決!

回覆

解決了我的問題,感謝~
我用 alias 設定啟動 可以參考下
在.bashrc 或 .zshrc 里加一行
alias subl_cn="LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so subl"
保持後執行 source .bashrc
然後就可以通過subl_cn 啟動支援輸入中文的sublime text

回覆

Ign0re:  ERROR: ld.so: object '/opt/sublime_text/libsublime-imfix.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
親愛的 請問你知道這是什麼情況嗎

 新增新回覆

ERROR: ld.so: object './libsublime-imfix.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
step3 wrong ,請問怎麼解決呢

回覆

/usr/share/applications/sublime_text.desktop
把Exec改為/usr/bin/subl就可以啦。

回覆

cptcrazy:  能說的再詳細點嗎?我也是遇到以下錯誤
ERROR: ld.so: object './libsublime-imfix.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
ERROR: ld.so: object '/opt/sublime_text/libsublime-imfix.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.