Ubuntu下Sublime Text 3输入中文

在Ubuntu下安装好sublime text 3和搜狗输入法后发现,无法输入中文。解决方案如下:

1. 安装依赖包

sudo apt-get install libgtk2.0-dev

 2. 生成支持中文输入的.so文件

新建文件 sublime_imfix.c,在文件中复制如下内容并保存。

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

3. 生成共享库 .so 文件

在sublime_imfix.c文件所在路径下用 gcc 指令生成共享库 libsublime-imfix.so,指令如下(假设sublime_imfix.c所在路径为/home/<user>):

cd  /home/<user>
gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC

根据自己的 Sublime Text 3 所在路径,将刚刚生成的 libsublime-imfix.so 复制过去

 sudo cp libsublime-imfix.so /opt/sublime_text/

4. 配置共享库文件

4.1 修改 /usr/bin/subl

修改 /usr/bin 路径中下的 subl 文件,若没有该文件,则新建文件

sudo gedit /usr/bin/subl

将下面的代码复制进 subl 中(第二行代码替代原代码)

#!/bin/sh
LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text "$@"

为 subl 提供执行权限,指令如下:

cd /usr/bin
sudo chmod +x subl

4.2 更改 .desktop 文件

修改 Sublime Text 3 目录中文件 sublime_text.desktop 的内容,若在安装目录下没有此文件,到/usr/share/applications下修改

sudo gedit /opt/sublime_text/sublime_text.desktop

将 [Desktop Entry] 中的字符串

Exec=/opt/sublime_text/sublime_text %F

修改为

扫描二维码关注公众号,回复: 9392403 查看本文章

Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text %F"

将 [Desktop Action 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"

将 [Desktop Action Document] 中的字符串

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"

/usr/share/applications下的Sublime Text文件按照上面同样内容修改。若无法直接用gedit命令打开此文件,可以先用root权限打开gedit软件,然后将Sublime Text文件拖入gedit编辑。

到此处,已经将 Sublime Text 3 中文配置执行完毕。再次打开sublime,就可以输入中文了。

发布了5 篇原创文章 · 获赞 1 · 访问量 1084

猜你喜欢

转载自blog.csdn.net/mei8775293/article/details/82732295