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


前言

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

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

  1. sublime-text-imfix:首先推薦這個方法,最簡單,但是在我的系統上有些問題。可用這個的強烈推薦用這個
  2. 完美解決 Linux 下 Sublime Text 中文輸入:講的比較明白,也可用參考。
  3. Ubuntu下Sublime Text 3解決無法輸入中文的方法: 講解的最清楚了,建議看看。

我的方法

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功能不能使用,當然,還有其他問題。為了正常使用,我就沒改。當然如果你中文輸入比較多,還是建議修改桌面快捷方式,畢竟那會方便很多,具體怎么樣,自己取舍。

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

 

 

 

  1. 本經驗目前在Ubuntu14.04環境下,已有搜狗輸入法 for Linux和Sublime Text 3的情況下安裝成功。

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

解決方法步驟2

 
  1.  

    保存下面的代碼到文件sublime_imfix.c(位於~目錄)

    #include <gtk/gtkimcontext.h>

    void gtk_im_context_set_client_window (GtkIMContext *context,

             GdkWindow    *window)

    {

     GtkIMContextClass *klass;

     g_return_if_fail (GTK_IS_IM_CONTEXT (context));

     klass = GTK_IM_CONTEXT_GET_CLASS (context);

     if (klass->set_client_window)

       klass->set_client_window (context, window);

     g_object_set_data(G_OBJECT(context),"window",window);

     

     if(!GDK_IS_WINDOW (window))

       return;

     int width = gdk_window_get_width(window);

     int height = gdk_window_get_height(window);

     if(width != 0 && height !=0)

       gtk_im_context_focus_in(context);

    }

    Ubuntu下Sublime Text 3解決無法輸入中文的方法
  2.  

    將上一步的代碼編譯成共享庫libsublime-imfix.so,命令

    cd ~

    gcc -shared -o libsublime-imfix.so sublime_imfix.c  `pkg-config --libs --cflags gtk+-2.0` -fPIC

     

    這一步也許需要

    安裝 C/C++ 的編譯環境和 gtk libgtk2.0-dev

    sudo apt-get install build-essential
    sudo apt-get install libgtk2.0-dev

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

    然后將libsublime-imfix.so拷貝到sublime_text所在文件夾

    sudo mv libsublime-imfix.so /opt/sublime_text/

    Ubuntu下Sublime Text 3解決無法輸入中文的方法
  4.  

    修改文件/usr/bin/subl的內容

    sudo gedit /usr/bin/subl

    #!/bin/sh

    exec /opt/sublime_text/sublime_text "$@"

    修改為

    #!/bin/sh

    LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text "$@"

    此時,在命令中執行 subl 將可以使用搜狗for linux的中文輸入

    Ubuntu下Sublime Text 3解決無法輸入中文的方法
  5.  

    為了使用鼠標右鍵打開文件時能夠使用中文輸入,還需要修改文件sublime_text.desktop的內容。

    命令

    sudo gedit /usr/share/applications/sublime_text.desktop

     

    將[Desktop Entry]中的字符串

    Exec=/opt/sublime_text/sublime_text %F

    修改為

    Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text %F"

     

    將[Desktop Action Window]中的字符串

    Exec=/opt/sublime_text/sublime_text -n

    修改為

    Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text -n"

     

    將[Desktop Action Document]中的字符串

    Exec=/opt/sublime_text/sublime_text --command new_file

    修改為

    Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text --command new_file"

     

    注意:

    修改時請注意雙引號"",否則會導致不能打開帶有空格文件名的文件。

    此處僅修改了/usr/share/applications/sublime-text.desktop,但可以正常使用了。

    opt/sublime_text/目錄下的sublime-text.desktop可以修改,也可不修改。

    Ubuntu下Sublime Text 3解決無法輸入中文的方法
  6.  

    經過以上步驟我們能在Sublime中輸入中文了。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM