Linux系统中Sublime Text无法输入中文怎么办?

阿凯与笨丹

阿凯与笨丹

2016-02-20 03:19

今天图老师小编给大家展示的是Linux系统中Sublime Text无法输入中文怎么办?,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!

Sublime Text是一个代码编辑器,拥有强大的功能,但Sublime Text 在Linux下运行的时候存在无法输入中文的问题,遇到该问题该如何解决呢?下面图老师小编就给大家介绍下Linux下Sublime Text 无法输入中文的解决方法。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/diannaorumen/)

 Linux系统中Sublime Text无法输入中文怎么办?

1.保存下面的代码为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);

}

2.编译动态库:

代码如下:

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

3. 设置 LD_PRELOAD 并启动 Sublime Text:

代码如下:

LD_PRELOAD=。/libsublime-imfix.so sublime_text

为了不用每次启动Sublime Text都打这么一长串东西,写了个启动Sublime的脚本:

代码如下:

#!/bin/bash

SUBLIME_HOME=/opt/sublime_text

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/diannaorumen/)

LD_LIB=$SUBLIME_HOME/libsublime-imfix.so

sh -c LD_PRELOAD=$LD_LIB $SUBLIME_HOME/sublime_text $@

把libsublime-imfix.so放到Sublime Text目录下并修改脚本中的SUBLIME_HOME,这样Sublime Text 就可以输入中文了。

上面就是Linux下Sublime Text 无法输入中文的解决方法的介绍了,只要按照上面的步骤,就能在Sublime Text 中输入中文了,是不是很简单呢?赶紧试试看吧。

展开更多 50%)
分享

猜你喜欢

Linux系统中Sublime Text无法输入中文怎么办?

电脑入门
Linux系统中Sublime Text无法输入中文怎么办?

怎么将Linux中的sublime text固定到launcher

电脑入门
怎么将Linux中的sublime text固定到launcher

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Sublime text 3中文乱码解决办法

电脑网络
Sublime text 3中文乱码解决办法

Ubuntu使用QT无法输入中文怎么办?

电脑入门
Ubuntu使用QT无法输入中文怎么办?

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

PowerPoint文本框无法输入中文怎么办

电脑网络
PowerPoint文本框无法输入中文怎么办

靠谱模拟器无法输入中文怎么办?

电脑网络
靠谱模拟器无法输入中文怎么办?

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

想下微软Windows 7什么版本适合你?

想下微软Windows 7什么版本适合你?

直接刻录MacOS系统光盘到PC上的方法

直接刻录MacOS系统光盘到PC上的方法
下拉加载更多内容 ↓