你的位置:首页 > 操作系统

[操作系统]解决Ubuntu下sublime中不能输入中文的问题


解决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-essentialsudo 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_text0sudo 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中输入中文了。