Ubuntu14.04 下安装sublime Text3

引言:

SublimeText是一款跨平台的代码编辑器,功能十分强大,但其在Ubuntu系统中却无法调用中文输入法,这篇文章提供一种解决方案,使Ubuntu下的"Sublime Text 3"能够支持中文输入。

目录:

  • 0x01:安装Sublime Text3
  • 0x02:解决Ubuntu 下 Sublime Text3 无法输入中文


0x01:安装Sublime Text3

         1.获取软件:通过SublimeText官方网站下载安装包:http://www.sublimetext.com/

                         目前最新版为3126

         2.安装: sudo dpkg -i sublime-text_build-3126_amd64.deb

         3.安装完成后可以在终端输入"subl"启动它,也可以在快速启动栏Ubuntu按钮中搜索"sublime"启动它

    4.启动后,在软件顶部点击"Help">"Enter License",粘贴下面的激活序列号:


3126版序列号: 

—– BEGIN LICENSE —–
Michael Barnes
Single User License
EA7E-821385
8A353C41 872A0D5C DF9B2950 AFF6F667
C458EA6D 8EA3C286 98D1D650 131A97AB
AA919AEC EF20E143 B361B1E7 4C8B7F04
B085E65E 2F5F5360 8489D422 FB8FC1AA
93F6323C FD7F7544 3F39C318 D95E6480
FCCC7561 8A4A1741 68FA4223 ADCEDE07
200C25BE DBBC4855 C4CFB774 C5EC138C
0FEC1CEF D9DCECEC D3A5DAD1 01316C36
—— END LICENSE ——

0x02:解决Ubuntu 下 Sublime Text3 无法输入中文

         1.安装编译环境:sudoapt-get install build-essential libgtk2.0-dev

    2.拷贝如下代码到文件sublime_imfix.c文件中,该文件需要自己创建,随便放到那里都行。

  

/*
 * sublime-imfix.c
 * Use LD_PRELOAD to interpose some function to fix sublime input method support for linux.
 * 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);
}

   
    3.在sublime-imfix.c文件所在目录执行下面的命令,编译库文件:

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

  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

     将【Desktop Action Document】中的字符串Exec=/opt/sublime_text/sublime_text --command new_file 修改为

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


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

      注:第五步仅限使用.deb文件安装的情况,如果使用源码安装的则需要变通一下,写个脚本将LD_PRELOAD加上即可




 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值