Copyright 2016 by 蔡舒啸 保持署名-非商业性使用-相同方式共享 Creative Commons BY-NC-ND 3.0
目录参考http://my.oschina.net/daleyjh/blog/151457
我的系统环境:
Ubuntu 16.04 64位
Sublime build3114
搜狗输入法v2.0.0.0070(编译时间2016-05-27)
以下步骤亲测可用:
打开终端(快捷键Ctrl+Alt+T),输入下面这条命令,按回车键,打开编辑器
gedit sublime_imfix.c
在编辑器中输入,按 Ctrl-S 保存后退出编辑器:
#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);
}
打开终端(快捷键Ctrl+Alt+T),输入下面2条命令(可能需要输入开机密码),回车
sudo apt-get install build-essential
sudo apt-get install libgtk2.0-dev
期间,可能需要确认是否安装c语言,一路回车就行
打开终端(快捷键Ctrl+Alt+T),输入下面的命令(直接复制黏贴避免打错字),回车
gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
在当前目录下就多了一个文件 libsublime-imfix.so
打开终端(快捷键Ctrl+Alt+T),输入下面的命令(直接复制黏贴避免打错字),回车
LD_PRELOAD=./libsublime-imfix.so subl
其中,subl
是启动 Sublime 的命令
进入一个空白的 Sublime 编辑器,切换成搜狗输入法 Ctrl+空格
可以输入中文了!
虽然有点小bug,输入框不跟着光标移动
打开终端(快捷键Ctrl+Alt+T),输入下面的命令(直接复制黏贴避免打错字),回车,搜索 Sublime 启动器位置
whereis subl
输入下面的命令(直接复制黏贴避免打错字),回车(可能需要输入开机密码),打开文件 /usr/bin/subl
sudo gedit /usr/bin/subl
假设第三步中,插件的路径是 /home/foo/libsublime-imfix.so
在文件 /usr/bin/subl 的第一行加入后,保存退出编辑器:
#!/bin/sh
export LD_PRELOAD=/home/foo/libsublime-imfix.so
exec /opt/sublime_text/sublime_text "$@"
现在通过终端的命令
subl
可以打开 Sublime 并且支持搜狗输入法
为了使用鼠标右键打开文件时,或通过左侧侧边栏的 Sublime 图标打开时,能使用中文输入,还需要修改文件 /usr/share/applications/sublime_text.desktop 的内容
请打开终端(快捷键Ctrl+Alt+T),输入以下命令,回车(可能需要输入开机密码):
sudo gedit /usr/share/applications/sublime_text.desktop
这里是已经改完的一份 /usr/share/applications/sublime_text.desktop:
注意: 这里假设第三步编译的插件位于 /opt/sublime_text/libsublime-imfix.so
[Desktop Entry]
Version=1.0
Type=Application
Name=Sublime Text
GenericName=Text Editor
Comment=Sophisticated text editor for code, markup and prose
Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text %F"
#Exec=/opt/sublime_text/sublime_text %F
Terminal=false
MimeType=text/plain;
Icon=sublime-text
Categories=TextEditor;Development;
StartupNotify=true
Actions=Window;Document;
[Desktop Action Window]
Name=New 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"
OnlyShowIn=Unity;
[Desktop Action Document]
Name=New File
#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"
OnlyShowIn=Unity;