歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Ubuntu Linux

解決Ubuntu下sublime中不能輸入中文的問題,ubuntusublime

解決Ubuntu下sublime中不能輸入中文的問題,ubuntusublime


解決Ubuntu下sublime中不能輸入中文的問題,ubuntusublime


解決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

Copyright © Linux教程網 All Rights Reserved