第一种方法,网上大神写的脚本。

地址在这里: https://github.com/lyfeyaj/sublime-text-imfix

clone下来尝试运行了一下,发现没成功,重启了一下,依旧不好使。第一种方法pass。

第二种方法,手动修改。

修改参考:http://jingyan.baidu.com/article/f3ad7d0ff8731609c3345b3b.html

~目录上创建一个名为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 libgtk2.0-dev

然后在~目录下使用下面的命令进行编译

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

然后将编译好的库文件放入Sublime Text的文件夹中。

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

然后将Sublime Text的启动文件为修改下面的代码。

sudo vi /usr/bin/subl

#!/bin/sh
LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text "$@"

这个时候使用subl命令的时候就可以使用中文输入法了。

为了更好适配平常的使用习惯,还需修改Sublime Text的图标启动文件。

这个文件位置在这里-> /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"

上面是原文中提到的修改方法。

为了省事【偷懒? 可以直接将Exec直接指向刚刚修改的/usr/bin/subl

即:Exec=/usr/bin/subl %F

举一反三上面的三种替换都可以用这个代替。


Monburan

好奇|爱折腾