Sublime Text是一款功能非常强大的轻量级代码编辑器,有关功能介绍和使用可以看我另一篇文章的描述http://www.cnblogs.com/jaxu/p/5037547.html

  不过,在Ubuntu系统上Sublime Text不支持输入中文,如何解决呢?

  搜索百度和Google,在github上发现了一个解决方案,经过尝试可以使用。

  其基本思路就是用C编写一个hotfix然后编译成共享库,移到Sublime Text的安装目录中,启动的时候带上这个共享库。步骤和shell命令在github上已经写得非常清楚了,这里我再详细描述一下。

1. 编写sublime-imfix.c源文件,放在~/home目录下(其实任何目录都可以)。源代码文件在github上有下载,我这里也给一份,方便copy:

/*
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. 通过以下命令安装C\C++编译环境和gtk libgtk2.0-dev。

sudo apt-get install build-essential libgtk2.0-dev

3. 执行以下命令编译共享库。执行该命令时需要在sublime-imfix.c文件所在的目录。

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

4. 将编译好的库移到Sublime Text的安装目录。如果你是通过Sublime Text官网直接下载.deb文件并安装的,在我机器上的默认位置是/opt/sublime_text

mv libsublime-imfix.so /opt/sublime_text

注意执行上述命令时需要在sublime-imfix.c文件所在的目录。

5. 通过下面的命令启动Sublime Text编辑器,看看是否可以输入中文啦?

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

6. 你当然不想每次都在终端通过输入命令来打开Sublime Text编辑器,切换到/usr/share/applications目录,编辑sublime_text.desktop文件的内容如下。

cd /usr/share/applications/

[Desktop Entry]
Version=1.0
Type=Application
Name=Sublime Text
GenericName=Text Editor
Comment=Sophisticated text editor for code, markup and prose
#Exec=/opt/sublime_text/sublime_text %F
Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so /opt/sublime_text/sublime_text"
Terminal=false
MimeType=text/plain;
Icon=sublime-text
Categories=TextEditor;Development;
StartupNotify=true
Actions=Window;Document;[Desktop Action Window]
Name=New Window
Exec=/opt/sublime_text/sublime_text -n
OnlyShowIn=Unity;[Desktop Action Document]
Name=New File
Exec=/opt/sublime_text/sublime_text --command new_file
OnlyShowIn=Unity;

注意看上面高亮的部分,将第5步中的启动命令替换进去,注意相对路径的位置。

7. 然后就没有然后了。在dash或启动栏中直接点击Sublime Text的图标,在打开的窗口中新建一个文件,切换输入法输入中文吧!

允许Sublime编辑器在Ubuntu上输入中文相关推荐

  1. Ubuntu下Sublime Text 3解决无法输入中文的方法

    2019独角兽企业重金招聘Python工程师标准>>> 环境: Ubuntu14.04 搜狗输入法 for Linux Sublime text 3 提示:编译请在非root下进行 ...

  2. linux freemind字体,解决freemind在Ubuntu中输入中文问题

    freemind是java程序,所以首先要解决java的中文字体解决问题,一般只要copy某个中文字体到jre的lib/fonts下某个文件夹就好了,如果用了多个jre,则需要确定用于运行freemi ...

  3. windows电脑上显示中文完好,新安装的办公系统上输入中文显示错误、无法显示中文

    问题描述:在自己电脑是所有地方都能正常显示中文字体,却在新下载的公司OA办公软件中输入中文简体字无法准确显示,当输入一个字体时不能显示,输入多个字却显示其他不对应的字. 解决方法: 打开设置,找到下面 ...

  4. Ubuntu安装搜狗输入法无论如何就是找不到的解决方法///Ubuntu怎么安装搜狗输入法///Ubuntu怎么输入中文///Ubuntu搜狗输入法怎么修改皮肤

    我刚装上ibus的时候,感觉一点也不好用,于是就换成了fcitx打算安装搜狗输入法for Linux, 结果各种方法都试过了,无论如何都找不到搜狗输入法,我偶然把fcitx5换成了fcitx4,结果意 ...

  5. Ubuntu系统输入中文方式

    我目前知道Ubuntu有两个还算好用的中文输入法: Fcitx:它是Linux世界开源的输入法框架,提供 Google PinYin.ShuangPin.SunPinYin.Wubi.ZhengMa. ...

  6. ubuntu如何输入中文

    右上角设置->区域与语言->输入源->点击+号添加 中文(智能拼音)

  7. ubuntu键盘输入中文延迟卡顿问题

    转自 https://blog.csdn.net/xmzwlw/article/details/48287313?utm_medium=distribute.pc_relevant.none-task ...

  8. Sublime Text 3 史上最性感的编辑器

    ↑ ↑ ↑ ↑ ↑ 请看文件夹 ↑ ↑ ↑ ↑ ↑ 下载 / 安装 windows / MAC OS 官网下载,双击安装,这个都会吧- linux linux下安装,一种办法是从官网下载 tar.bz ...

  9. kali-linux 完美解决sublime输入 中文

    kali-linux 完美解决sublime输入中文 在kali-linux 完成任何一件事情都是非常高兴的,对于长期使用window系统的人是个巨大的挑战. 对于sublime下载后出现不能输入中文 ...

最新文章

  1. python实现快排算法(quicksort)
  2. WWDC 2018:iOS 内存深入研究
  3. 利用gearman实现redis缓存mysql
  4. python运行非常慢的解决-为什么python运行的慢
  5. 编译Android VNC Server
  6. 使用gradle插件发布项目到nexus中央仓库
  7. B 站神曲 damedane:精髓在于换脸,五分钟就能学会
  8. Linux常用命令大全(持续更新)
  9. 【优化算法】多目标蜻蜓优化算法(MODA)【含Matlab源码 1350期】
  10. 如何从Unity商店下载资源?
  11. Python 爬虫 书籍爬取实例
  12. flashfxp连接centos7失败原因之一
  13. 刺激战场 枪支性能雷达图分析
  14. 代理是如何实现IP伪装的呢?
  15. 【JMeter】压测工具的使用
  16. Linux路由器的配置
  17. ucos II任务管理之一:挂起任务
  18. FPGA之简易频率计的设计
  19. 【极客赠书】向Richard Stallman提问,赢取传记《若为自由故》【活动结束】
  20. Spark 内存管理存储内存管理_尚硅谷大数据培训

热门文章

  1. maven引用外部jar依赖
  2. 部署web应用程序到tomcat
  3. poj Muddy Fields
  4. partial关键字的含义和使用
  5. 诗与远方:无题(四十三)- 幼稚肤浅
  6. Eclipse使用技巧
  7. Bootstrap(一)——简介、布局容器和工具类使用(flex布局)
  8. JS逻辑运算符——短路逻辑
  9. Vue——this.$nextTick()
  10. python画关系网图_使用python绘制人人网好友关系图示例