解決Ubuntu下sublime中不能輸入中文的問題
Ubuntu下安裝sublime後,不能輸入中文,而在其他軟件中能正常輸入,這是sublime的bug,解決方案是在通過shell在每次運行sublime前自動添加一個動態修正庫,解決過程如下:
進入某個目錄如~:
cd
新建一個C源代碼
subl 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); }
在能編譯之前可能需要安裝依賴包,通過以下命令完成:
sudo apt-get install build-essential sudo apt-get install libgtk2.0-dev
然後編譯C文件:
gcc -shared -o libsublime-imfix.so sublime-imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
接下來在每次運行sublime程序之前告訴程序鏈接上這個.so庫文件即可在sublime中輸入中文,其命令是LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text "$@",其中/opt/sublime_text/是sublime安裝的默認目錄。命令行的subl還是Dash的Sublime Text,或是文件浏覽器裡的open with> sublime text,他們都能啟動sublime程序,但不必尋找他們的啟動入口,而後一一改之。他們都依賴於執行/opt/sublime_text/sublime_text,利用此特點,將/opt/sublime_text/sublime_text二進制另存,之後寫個名為/opt/sublime_text/sublime_text的shell腳本,其中實現在執行新建此shell腳本以前的/opt/sublime_text/sublime_text二進制之前,告訴程序鏈接.so修正庫文件。過程如下:
cd /opt/sublime_text/ sudo mv sublime_text sublime_text0 sudo vim sublime_text # 不熟悉vim者亦可sudo gedit sublime_text
在一行內寫入以下語句後保存:
LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text0 "$@"
sudo chmod +x sublime_text
至此應該可以在sublime中輸入中文了。
http://xxxxxx/Linuxjc/1143292.html TechArticle