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

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;

你可能感兴趣的:(ubuntu,sublime,搜狗输入法)