文档章节

ubuntu下sublime关于中文的问题

降龙罗汉
 降龙罗汉
发布于 2014/09/09 10:59
字数 626
阅读 33
收藏 0

关于Pyhton的编码工具我选来选出还是觉得Sublime Text这款工具简单好用,Vim配置太过复杂了,我折腾了一天就放弃了,SublimeText的中文输入有一点问题,所以要写一个C的将文字传送给Sublime Text~~(貌似是这样,我也是个菜鸟,这个C文件的作用我也不是太懂,我说错了的话看到这篇文章的大大给我解释一下吧- -),下面具体说下安装方式把。

我是直接在Sublime Text的官网上下的压缩文件,解压后文件夹内的SublimeText2程序是可以直接运行的,但是这个时候是无法输入中文的。

首先因为要用编译C文件,所以我们要下载相应的C工具包,在shell里输入下面的命令即可:

<!-- lang: cpp -->
sudo apt-get install build-essential
sudo apt-get install libgtk2.0-dev

然后将下面这段代码保存成sublime-imfix.c文件

<!-- lang: cpp -->
#include <gtk/gtk.h>#include <gdk/gdkx.h>
typedef GdkSegment GdkRegionBox;
struct _GdkRegion{
    long size;
    long numRects;
    GdkRegionBox *rects;
    GdkRegionBox extents;
};
GtkIMContext *local_context;
voidgdk_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;
    if(rectangle->width == 2 && GTK_IS_IM_CONTEXT(local_context)) {
        gtk_im_context_set_cursor_location(local_context, rectangle);
    }
}
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);
}

然后用cd命令进入你存放C文件的地方,运行下面这条命令编译文件(这行命令要一次性运行)

<!-- lang: cpp -->
gcc -shared -o libsublime-imfix.so sublime_imfix.c  
`pkg-config --libs --cflags gtk+-2.0` -fPIC

运行后如果没有大的问题你会发现目录下出现了一个.so文件,把这个文件用mv命令移动到SublimeText的目录下面,然后用shell进入SublimeText目录后运行下面这个脚本就可以打开SublimeText输入中文了。(我的SublimeText放在Home目录下的APP文件夹下面,这里你们要改成你们自己的路径)

<!-- lang: cpp -->
SUBLIME_HOME="$HOME/APP/SublimeText2"
LD_LIB="$SUBLIME_HOME/libsublime-imfix.so"
sh  -c "LD_PRELOAD=$LD_LIB  $SUBLIME_HOME/sublime_text $@"

当然,你也可以把SublimeText的desktop文件的Exce路径改成这个脚本文件的路径,然后就可以通过启动器启动软件了。

本文转载自:http://www.21ops.com/linux/29752.html

降龙罗汉

降龙罗汉

粉丝 217
博文 46
码字总数 17384
作品 0
深圳
程序员
私信 提问
加载中

评论(1)

沃德天拉莫帅
沃德天拉莫帅
可以评论?
Ubuntu 系统 sublime3 中文输入

转载自 http://doc.polarwin.cn/tutorial/Ubuntusublime3chineseinput.html -------------本文完全复制的上面的文章-------------------- Ubuntu安装sublime3并解决中文输入问题 1 安装 首先...

求学ing
2015/11/05
109
0
Sublime Text 2/3 输入法(Fcitx)修复[Ubuntu(Debian)]

文章目录 主要目的 更新 注意 使用方法 主要目的 安装 Sublime Text 3 安装 Fcitx 输入法 + 皮肤 修复 Sublime Text 2/3’s 在 Ubuntu(Debian) 系统下的无法输入中文(CJK 字符)输入法的问题 ...

John
2018/06/15
0
0
Ubuntu系统下Sublime Text 2中fcitx中文输入法的解决方法

Ubuntu系统下Sublime Text 2中fcitx中文输入法的解决方法 前几天把Ubuntu升级到了13.04 beta 2,顺便安装了fcitx 搜狗输入法,但是发现在sublime text 2中无法输入中文,之前在ubuntu 12.04....

jackchanxj
2014/02/18
99
0
配置Elementary OS作为工作环境

买了新电脑之后,就换上Elementary OS作为自己的Linux版本。不得不说,Elementary OS确实是我见过的最漂亮的Linux发行版,而且它的panel+dock的设计也很适合用来工作。折腾一番之后终于配置好...

halfcoder
2013/10/12
5K
0
解决Ubuntu上使用Sublime Text2无法输入中文问题

Sublime Text是一个很好的编码工具,但是有一个蛋疼的问题,就是在Ubuntu是无法输入中文。这个问题终于解决了。。。可以http://my.oschina.net/wugaoxing/blog/121281这篇博客。 我的解决方法...

leaf志良
2013/12/17
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
41分钟前
4
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
8
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
11
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
10
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部