症状:Sublime text 3 for linux 无法使用搜狗拼音输入法

系统:Linux Mint 18.1

解决方案 2(推荐用这个)

1. 将 github 上的代码 clone 到本地git clone https://github.com/myefly/sublime-text-imfix.git

2. 进入目录,并运行脚本,跟着提示操作cd sublime-text-imfix && ./sublime-imfix

3. 重启计算机

解决方案 1 如下:

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

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

LD_PRELOAD=./libsublime-imfix.so subl

*/

#include

#include

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. 安装 C/C++ 的编译环境和 gtk libgtk2.0-devsudo apt-get install build-essential libgtk2.0-dev

3. 编译共享内库gcc -shared -o libsublime-imfix.so sublime-imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC

4. 设置 LD_PRELOAD 并启动 Sublime TextLD_PRELOAD=./libsublime-imfix.so subl

5. 修改 /usr/share/applications/sublime_text.desktop[Desktop Entry]

[...]

Exec=env LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so /opt/sublime_text/sublime_text %F

[...]

[Desktop Action Window]

[...]

Exec=env LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so /opt/sublime_text/sublime_text -n

[...]

[Desktop Action Document]

[...]

Exec=env LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so /opt/sublime_text/sublime_text --command new_file

[...]

6. 不要忘了把 libsublime-imfix.so 放到 /opt/sublime_text/ 中

7. 修改 /usr/bin/subl#!/bin/sh

export LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so

exec /opt/sublime_text/sublime_text "$@"

sublime text 3 输入中文 linux,解决 Linux 下 Sublime Text 3 中文无法输入问题相关推荐

  1. linux php 中文乱码解决,Linux中文乱码如何解决

    刚开始使用Linux系统的时候,大家都会遇到一个问题,那就是终端输入命令回显的时候中文显示乱码.为什么会出现这样的问题呢?出现这样的问题,我们应该怎么去解决它好呢?有何解决方法?今天,小编就和大家说一 ...

  2. crossover linux 中文乱码,解决CrossOver下TM2013的中文乱码问题

    主要有两个步骤组成. 调Locale设置 就一句话: 记得将Locale调成中文zh_CN.UTF-8!!! 使用英文的Locale, TM 2013的输入字体区会使用英文字体,而英文字体无法显示中文 ...

  3. mysql中文问号 linux,解决Linux系统下Mysql数据库中文显示成问号的问题

    Linux系统下 MYSQL数据库中的数据库文件在本机内迁移 (需暂停服务的方式) Linux系统下 MYSQL数据库中的数据库文件在本机内迁移 本机采用Ubuntu16.04系统,tar方式安装My ...

  4. 安装linux系统出来7只小企鹅,在Red Hat Linux 9.0下安装小企鹅中文输入法

    小企鹅中文输入法(Free Chinese Input Toy for X,fcitx)是一个以GPL方式发布的.基于XIM的简体输入法(其前身为g五笔),包括五笔.拼音.区位输入法,是在Linux ...

  5. python json.loads()中文问题-解决Python下json.loads()中文字符出错的问题

    Python:2.7 IDE:Pycharm5.0.3 今天遇到一个问题,就是在使用json.load()时,中文字符被转化为Unicode码的问题,解决方案找了半天,无解.全部代码贴出,很简单的一个 ...

  6. php excelreader 中文,如何解决php excel reader导出excel中文乱码?

    解决php excel reader导出excel中文乱码的方法:1.如果不使用dump函数,可以通过修改[_defaultEncoding]变量解决问题:2.如果使用dump函数导出excel,需要 ...

  7. Linux网易云无法输入中文,Manjaro解决网易云音乐无法在搜索框输入中文的问题

    end 2020-10-13更新:新版本中可以正常使用 2020-10-13_14-42.png qcef百度网盘 2020-01-02更新:已知问题,修改后在最新版本中会出现闪退 1.先安装qcef ...

  8. linux crossover 乱码,解决ubuntu下crossover中qq中文字体乱码问题

    本文适应于ubuntu16.04,crossover16.2.0-1.(如使用qq推荐使用腾讯qq8.9-2,点击下方的安装windows软件,在输入框输入"qq"两字即可看到) ...

  9. sublime运行python代码python没显示_解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享...

    解决方案 搜了一下,找到一个 Linux 下的解决方案,如下所示: Sublime Text2 运行pySide/pyQt程序的问题 Ctrl-B后,界面不会弹出来,但是后台进程里面有"py ...

最新文章

  1. FFmpeg转OpenCV Mat显示
  2. AI深入应用,生态越加开放,开发者的机会在哪里?
  3. [转载]监控 Linux 性能的 18 个命令行工具
  4. 怎样练习一万小时(转)
  5. 【白皮书下载】2020中国社交零售白皮书-BCGx腾讯.pdf
  6. oracle 循环块,Oracle语句块PL/SQL循环判断
  7. arduino与风向传感器的接线_Arduino动手做(8)湿度传感器模块
  8. matlab各种文件类型,MATLAB中的文件类型总结
  9. springboot 神通数据库
  10. java 电话呼叫中心_java呼叫中心系统
  11. 乱码电路(Garbled circuits)
  12. android调起浏览器设置头部,Android开发:调起手机浏览器
  13. 链家深圳租房信息爬取练习 附加源码
  14. stm32驱动ili9486液晶显示屏
  15. 阿里云国际站的对象存储oss与自建存储的区别
  16. 微信小程序 保存base64图片和普通图片
  17. 微信小程序:设置字体跟随手机系统
  18. win10/win11 + WSL + gui 配置教程
  19. ASEMI代理ST/意法STW78N65M5原厂渠道汽车级MOSFET
  20. 程序员鄙视链python_哈哈哈,程序员之间的鄙视链,总结全了!

热门文章

  1. dreamweaver 8的替换功能
  2. android 拉伸图片
  3. 思达报表工具Style Report基础教程—创建一个多数据块的联合(Union)、镜像(Mirror)...
  4. ubuntu安装deb,rpm安装包方法
  5. 在 VB.NET 编程中使用数组
  6. CCF201503-1 图像旋转(100分)【数学计算】
  7. UVA558 LA5579 Wormholes【Floyd算法】
  8. Bailian3195 最大公约数【数论】
  9. Bailian2734 十进制到八进制(POJ NOI0113-45)【进制】
  10. 常见问题与常见算法的时间复杂度