您的位置:首页 > 产品设计 > UI/UE

Ubuntu 16.04 64位 Sublime build3114 不支持搜狗输入法的解决方案

2016-07-01 22:28 666 查看
Copyright 2016 by 蔡舒啸 保持署名-非商业性使用-相同方式共享 Creative Commons BY-NC-ND 3.0

目录

更新目前Sublime 3 build3114 版本的插件功能在Ubuntu 1604上无法使用请尝试Sublime 2或Ubuntu 1404

第一步 - 新建文件sublime_imfixc

第二步 - 安装c语言编译器

第三步 - 编译文件sublime_imfixc生成插件

第四步 - 用libsublime-imfixso启动 Sublime

第五步 - 修改命令行下 subl 命令的启动器启动时自动加载插件

第六步 - 修改右键菜单和侧边栏 Sublime 的启动器启动时自动加载插件

更新:目前Sublime 3 build3114 版本的插件功能在Ubuntu 16.04上无法使用,请尝试Sublime 2或Ubuntu 14.04

参考http://my.oschina.net/daleyjh/blog/151457

我的系统环境:

Ubuntu 16.04 64位
Sublime build3114
搜狗输入法v2.0.0.0070(编译时间2016-05-27)


以下步骤亲测可用:

第一步 - 新建文件sublime_imfix.c

打开终端(快捷键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);
}


第二步 - 安装c语言编译器

打开终端(快捷键Ctrl+Alt+T),输入下面2条命令(可能需要输入开机密码),回车

sudo apt-get install build-essential
sudo apt-get install libgtk2.0-dev


期间,可能需要确认是否安装c语言,一路回车就行

第三步 - 编译文件sublime_imfix.c,生成插件

打开终端(快捷键Ctrl+Alt+T),输入下面的命令(直接复制黏贴避免打错字),回车

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


在当前目录下就多了一个文件 libsublime-imfix.so

第四步 - 用libsublime-imfix.so启动 Sublime

打开终端(快捷键Ctrl+Alt+T),输入下面的命令(直接复制黏贴避免打错字),回车

LD_PRELOAD=./libsublime-imfix.so subl


其中,
subl
是启动 Sublime 的命令

进入一个空白的 Sublime 编辑器,切换成搜狗输入法 Ctrl+空格

可以输入中文了!

虽然有点小bug,输入框不跟着光标移动

第五步 - 修改命令行下 subl 命令的启动器,启动时自动加载插件

打开终端(快捷键Ctrl+Alt+T),输入下面的命令(直接复制黏贴避免打错字),回车,搜索 Sublime 启动器位置

whereis subl


显示
subl: /usr/bin/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 的启动器,启动时自动加载插件

为了使用鼠标右键打开文件时,或通过左侧侧边栏的 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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息