在Ubuntu下安装好sublime text 3和搜狗输入法后发现,无法输入中文。解决方案如下:
1. 安装依赖包
sudo apt-get install libgtk2.0-dev
2. 生成支持中文输入的.so文件
新建文件 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);
}
3. 生成共享库 .so 文件
在sublime_imfix.c文件所在路径下用 gcc 指令生成共享库 libsublime-imfix.so,指令如下(假设sublime_imfix.c所在路径为/home/<user>):
cd /home/<user>
gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
根据自己的 Sublime Text 3 所在路径,将刚刚生成的 libsublime-imfix.so 复制过去
sudo cp libsublime-imfix.so /opt/sublime_text/
4. 配置共享库文件
4.1 修改 /usr/bin/subl
修改 /usr/bin 路径中下的 subl 文件,若没有该文件,则新建文件
sudo gedit /usr/bin/subl
将下面的代码复制进 subl 中(第二行代码替代原代码)
#!/bin/sh
LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text "$@"
为 subl 提供执行权限,指令如下:
cd /usr/bin
sudo chmod +x subl
4.2 更改 .desktop 文件
修改 Sublime Text 3 目录中文件 sublime_text.desktop 的内容,若在安装目录下没有此文件,到/usr/share/applications下修改
sudo gedit /opt/sublime_text/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文件按照上面同样内容修改。若无法直接用gedit命令打开此文件,可以先用root权限打开gedit软件,然后将Sublime Text文件拖入gedit编辑。
到此处,已经将 Sublime Text 3 中文配置执行完毕。再次打开sublime,就可以输入中文了。