在Ubuntu 14.04中安装了SublimeText 3之后发现既然不支持输入中文,于是在网上搜罗一下,发现非常多人遇到了相同的问题,可是解决的方法大该就仅仅有一个。以下依据自身的安装及解决的方法总结例如以下:

1. SublimeText 3的安装

    安装方式有多种,本文所描写叙述的是从官方站点上下载64位的.deb文件 。详细为http://c758482.r82.cf2.rackcdn.com/sublime-text_build-3059_amd64.deb文件。下载后双击即会自己主动使用默认的安装软件安装。

2. 相关依赖软件的安装

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

3. 拷贝例如以下代码到文件sublime_imfix.c文件里,该文件须要自己创建,随便放到那里都行。

/*

 * sublime-imfix.c

 * Use LD_PRELOAD to interpose some function to fix sublime input method support for linux.

 * By Cjacker Huang <jianzhong.huang at i-soft.com.cn> *

 *

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

 * LD_PRELOAD=./libsublime-imfix.so sublime_text

 */

#include <gtk/gtk.h>

#include <gdk/gdkx.h>



typedef GdkSegment GdkRegionBox;



struct _GdkRegion

{

    long size;

    long numRects;

    GdkRegionBox *rects;

    GdkRegionBox extents;

};



GtkIMContext *local_context;



void

gdk_region_get_clipbox (const GdkRegion *region,

                        GdkRectangle    *rectangle)

{

    g_return_if_fail (region != NULL);

    g_return_if_fail (rectangle != NULL);



    rectangle->x = region->extents.x1;

    rectangle->y = region->extents.y1;

    rectangle->width = region->extents.x2 - region->extents.x1;

    rectangle->height = region->extents.y2 - region->extents.y1;

    GdkRectangle rect;

    rect.x = rectangle->x;

    rect.y = rectangle->y;

    rect.width = 0;

    rect.height = rectangle->height;



    //The caret width is 2;

    //Maybe sometimes we will make a mistake, but for most of the time, it should be the caret.

    if (rectangle->width == 2 && GTK_IS_IM_CONTEXT(local_context)) {

        gtk_im_context_set_cursor_location(local_context, rectangle);

    }

}



//this is needed, for example, if you input something in file dialog and return back the edit area

//context will lost, so here we set it again.



static GdkFilterReturn event_filter (GdkXEvent *xevent, GdkEvent *event, gpointer im_context)

{

    XEvent *xev = (XEvent *)xevent;



    if (xev->type == KeyRelease && GTK_IS_IM_CONTEXT(im_context)) {

        GdkWindow *win = g_object_get_data(G_OBJECT(im_context), "window");



        if (GDK_IS_WINDOW(win)) {

            gtk_im_context_set_client_window(im_context, win);

        }

    }



    return GDK_FILTER_CONTINUE;

}



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);

    }



    if (!GDK_IS_WINDOW (window)) {

        return;

    }



    g_object_set_data(G_OBJECT(context), "window", window);

    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);

        local_context = context;

    }



    gdk_window_add_filter (window, event_filter, context);

}

依照文件头上凝视所说的编译该文件,在终端里进入到存放该文件的文件夹中,输入例如以下命令:
    gcc -shared -o libsublime-imfix.so sublime_imfix.c  `pkg-config --libs --cflags gtk+-2.0` -fPIC
最后在当前文件夹下得到libsublime-imfix.so这个共享库。

4. 中文输入

    到这里默认已经装好了中文输入法(搜狗输入法linux版)。得到第3步中的库libsublime-imfix.so之后,先试试看能否正常使用中文输入法,在终端中输入例如以下命令:

    LD_PRELOAD=./libsublime-imfix.so subl             #subl是安装好SublimeText 3后的程序启动命令
假设一切正常,在启动之后。搜狗输入法就能能够输入了。

5. 为了方便

    在第4步中假设每次都输入LD_PRELOAD这样显得太不方便了。在这里提供简单改动图标连接的方式,高速打开SublimeText。将libsublime-imfix.so复制到系统库的默认路径中:

    sudo cp libsublime-imfix.so /usr/lib/

    改动/usr/share/applications/sublime_text.desktop文件

    sudo vim /usr/share/applications/sublime_text.desktop

    打开后将Exec=/opt/sublime_text/sublime_text %F改动为

    Exec=bash -c 'LD_PRELOAD=/usr/lib/libsublime-imfix.so /opt/sublime_text/sublime_text' %F

   将Exec=/opt/sublime_text/sublime_text -n改动为

    Exec=bash -c 'LD_PRELOAD=/usr/lib/libsublime-imfix.so /opt/sublime_text/sublime_text' -n

这样就通过快捷方式打开SublimeText 3就能够支持中文输入了。

注:第五步仅限使用.deb文件安装的情况,假设使用源代码安装的则须要变通一下,写个脚本将LD_PRELOAD加上就可以







点滴记录——在Ubuntu 14.04中使SublimeText 3支持中文输入法的更多相关文章

  1. zhuan:点滴记录——Ubuntu 14.04中gedit打开文件出现中文乱码问题

    在中文支持配置还不完整的Ubuntu 14.04中,使用gedit打开带有中文字符的文件有时会出现乱码的情况,这是由于gedit对字符编码匹配不正确导致的,解决方法如下: 在终端中输入如下命令,然后重 ...

  2. Ubuntu 14.04中gedit打开文件出现中文乱码问题

    http://blog.csdn.net/cywosp/article/details/32325449/ 在中文支持配置还不完整的Ubuntu 14.04中,使用gedit打开带有中文字符的文件有时 ...

  3. 点滴记录——Ubuntu 14.04中Chrome浏览器标题栏出现中文乱码

    今天不知道在系统里装的哪个软件与Chrome浏览器所用的字体向冲突了,导致标题栏显示的中文都变成了乱码,其次收藏栏中的中文也变成了乱码.导致原有的收藏内容都无法辨认了.在网上搜索了一下,也有人遇到了相 ...

  4. 装机篇:ubuntu 14.04 在英文环境下安装中文输入法(转载)

    ubuntu默认的输入法是ibus,综合网上评论,fcitx的支持者更多,而且个人感觉fcitx也的确不错,可以满足日常输入. STEP1: 在Ubuntu Software Center 搜索fci ...

  5. Ubuntu 14.04中Elasticsearch集群配置

    Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...

  6. Ubuntu 14.04中安装最新版Eclipse

    Ubuntu 14.04中安装最新版Eclipse 来源:Linux社区    作者:Linux 1.安装OpenJDK Java 7 如果你的系统中没有安装Java,我们需要按照如下步骤事先安装好 ...

  7. 如何在Ubuntu 14.04中安装最新版Eclipse

    想必很多开发人员都知道,Ubuntu 软件源中提供的并不是最新版本的 Eclipse,本教程就教大家如何在 Ubuntu 14.04 中快速安装 Eclipse 官方发布的最新版本. 到目前为止,Ec ...

  8. 如何在Ubuntu 14.04中使用Samba共享文件

    Linux 下的文件共享利器 Samba 想必大家已经非常熟悉了,今天我们介绍下如何在Ubuntu 14.04中使用 Samba 共享网络文件.打印机和其它公共资源. 1.安装 Samba 和图形配置 ...

  9. 怎样在Ubuntu 14.04中安装Java(转)

    想知道如何在Ubuntu 14.04中安装Java?安装Java肯定是安装Ubuntu 14.04后首先要做的几件事情之一(见http://www.linuxidc.com/Linux/2014-04 ...

随机推荐

  1. UESTC 2015dp专题 E 菲波拉契数制 dp

    菲波拉契数制 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/65 Descr ...

  2. CentOS下使用KVM克隆虚拟机自动修改网卡的MAC地址

    克隆完虚拟机之后Mac地址还保留着母机的配置,此时需要修改成新的Mac地址才能继续,网上一般都是这样的手动操作: 参考:http://blog.51cto.com/freedyong/1361907 ...

  3. iOS开源项目大全

    UI界面类项目: Panoramagl —— 720全景展示 Panorama viewer library for iPhone, iPad and iPod touch MBProgressHUD ...

  4. 用C++/CLI搭建C++和C#之间的桥梁(一)—— 简介

    C#和C++是非常相似的两种语言,然而我们却常常将其用于两种不同的地方,C#得益于其简洁的语法和丰富的类库,常用来构建业务系统.C++则具有底层API的访问能力和拔尖的执行效率,往往用于访问底层模块和 ...

  5. Percona-Toolkit学习之安装和配置

    http://blog.chinaunix.net/uid-26446098-id-3390779.html

  6. linux下启动tomcat出现“This file is needed to run this program ”

    使用sh startup.sh启动tomcat 出现This file is needed to run this program 原因.sh文件都不是可执行文件,于是找到命令: chmod +x * ...

  7. Combogrid的onChange和onSelect

    这里只作记录一下 在easyui开发过程中遇到下边两个事儿 combogrid/combotree做级联: $("#" + deptId).combotree( { url : u ...

  8. android基础学习-Fragment和eclipse快捷键

    使用Fragment的原因 1. Activity间的切换不流畅 2. 模块化Activity,方便做局部动画(有时为了到达这一点要把多个布局放到一个activity里面,现在可以用多Fragment ...

  9. [Linux] Ubuntu下解压rar文件的方法

    一般通过默认安装的ubuntu是不能解压rar文件的,只有在安装了rar解压工具之后,才可以解压.其实在ubuntu下安装rar解压工具是非常简单的,只需要两个步骤就可以迅速搞定. ubuntu 下r ...

  10. 2)Linux程序设计入门--进程介绍

    )Linux程序设计入门--进程介绍 Linux下进程的创建 前言: 这篇文章是用来介绍在Linux下和进程相关的各个概念.我们将会学到: 进程的概念 进程的身份 进程的创建 守护进程的创建 .进程的 ...