在Ubuntu 14.04中安装了SublimeText 3之后发现既然不支持输入中文,于是在网上搜罗一下,发现很多人遇到了同样的问题,但是解决办法大该就只有一个。下面根据自身的安装及解决办法总结如下:

1. SublimeText 3的安装

安装方式有多种,本文所描述的是从官网下载与自己系统相匹配的.deb 文件,下载后双击即可安装。

2. 相关依赖软件的安装

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

3. 支持中文输入

拷贝如下代码到文件sublime-imfix.c文件中,该文件需要自己创建,放在主文件夹下(home文件夹)

  1. /*
  2. sublime-imfix.c
  3. Use LD_PRELOAD to interpose some function to fix sublime input method support for linux.
  4. By Cjacker Huang <jianzhong.huang at i-soft.com.cn>
  5. gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
  6. LD_PRELOAD=./libsublime-imfix.so sublime_text
  7. */
  8. #include <gtk/gtk.h>
  9. #include <gdk/gdkx.h>
  10. typedef GdkSegment GdkRegionBox;
  11.  
  12. struct _GdkRegion
  13. {
  14. long size;
  15. long numRects;
  16. GdkRegionBox *rects;
  17. GdkRegionBox extents;
  18. };
  19.  
  20. GtkIMContext *local_context;
  21.  
  22. void
  23. gdk_region_get_clipbox (const GdkRegion *region,
  24. GdkRectangle *rectangle)
  25. {
  26. g_return_if_fail (region != NULL);
  27. g_return_if_fail (rectangle != NULL);
  28.  
  29. rectangle->x = region->extents.x1;
  30. rectangle->y = region->extents.y1;
  31. rectangle->width = region->extents.x2 - region->extents.x1;
  32. rectangle->height = region->extents.y2 - region->extents.y1;
  33. GdkRectangle rect;
  34. rect.x = rectangle->x;
  35. rect.y = rectangle->y;
  36. rect.width = ;
  37. rect.height = rectangle->height;
  38. //The caret width is 2;
  39. //Maybe sometimes we will make a mistake, but for most of the time, it should be the caret.
  40. if(rectangle->width == && GTK_IS_IM_CONTEXT(local_context)) {
  41. gtk_im_context_set_cursor_location(local_context, rectangle);
  42. }
  43. }
  44.  
  45. //this is needed, for example, if you input something in file dialog and return back the edit area
  46. //context will lost, so here we set it again.
  47.  
  48. static GdkFilterReturn event_filter (GdkXEvent *xevent, GdkEvent *event, gpointer im_context)
  49. {
  50. XEvent *xev = (XEvent *)xevent;
  51. if(xev->type == KeyRelease && GTK_IS_IM_CONTEXT(im_context)) {
  52. GdkWindow * win = g_object_get_data(G_OBJECT(im_context),"window");
  53. if(GDK_IS_WINDOW(win))
  54. gtk_im_context_set_client_window(im_context, win);
  55. }
  56. return GDK_FILTER_CONTINUE;
  57. }
  58.  
  59. void gtk_im_context_set_client_window (GtkIMContext *context,
  60. GdkWindow *window)
  61. {
  62. GtkIMContextClass *klass;
  63. g_return_if_fail (GTK_IS_IM_CONTEXT (context));
  64. klass = GTK_IM_CONTEXT_GET_CLASS (context);
  65. if (klass->set_client_window)
  66. klass->set_client_window (context, window);
  67.  
  68. if(!GDK_IS_WINDOW (window))
  69. return;
  70. g_object_set_data(G_OBJECT(context),"window",window);
  71. int width = gdk_window_get_width(window);
  72. int height = gdk_window_get_height(window);
  73. if(width != && height !=) {
  74. gtk_im_context_focus_in(context);
  75. local_context = context;
  76. }
  77. gdk_window_add_filter (window, event_filter, context);
  78. }

打开终端,输入如下命令:

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

最后在当前目录下得到libsublime-imfix.so这个共享库。再将libsublime-imfix.so拷贝到系统库的默认路径中:

  1. sudo cp libsublime-imfix.so /usr/lib/

修改/usr/share/applications/sublime_text.desktop文件

  1. sudo gedit /usr/share/applications/sublime_text.desktop

打开后将Exec=/opt/sublime_text/sublime_text %F修改为

  1. Exec=bash -c 'LD_PRELOAD=/usr/lib/libsublime-imfix.so /opt/sublime_text/sublime_text' %F

将Exec=/opt/sublime_text/sublime_text -n修改为

  1. Exec=bash -c 'LD_PRELOAD=/usr/lib/libsublime-imfix.so /opt/sublime_text/sublime_text' -n

保存关闭,重新打开SublimeText 3就可以支持中文输入了。到这里默认已经装好了中文输入法(搜狗输入法linux版)。

Ubuntu14.04下Sublime Text 3解决无法输入中文的更多相关文章

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

    Ubuntu下Sublime Text 3解决无法输入中文的方法_百度经验http://jingyan.baidu.com/article/f3ad7d0ff8731609c3345b3b.html ...

  2. Ubuntu 16.04 LTS sublime text 3 解决不能输入中文

    sublime text 3 安装完成后不能输入中文,让人很是不爽.下面内容可以解决使用问题! 一.首先要注意几个问题. 1)sublime_imfix.c 文件放在home目录下面. 2)如果你在步 ...

  3. 解决Ubuntu14.04下sublime无法输入中文

    原帖地址: (简书作者) http://www.jianshu.com/p/bf05fb3a4709 前言 sublime很好用,但是ubuntu14.04 下不能输入中文,这是一个很大的问题.不知道 ...

  4. Ubuntu18.04下安装Sublime Text3并解决不能输入中文

    Ubuntu18.04下安装Sublime Text3并解决不能输入中文! 废话不多说,直接按顺序执行下面命令开始安装! wget -qO - https://download.sublimetext ...

  5. 关于ubuntu下sublime text 3 的安装和中文配置问题

    一.sublime text 3 在ubuntu 16.04下的安装过程 1)首先下载sublime text 3 的tar包 $ wget https://download.sublimetext. ...

  6. ubuntu15.04下sublime text不能输入中文的解决

    原因是由于中文输入法的输入焦点不能插入sublime的输入窗口中,需要使用代码强制插入输入焦点. 代码是cjacker 君提供的,可以看原始的讨论帖子: http://www.sublimetext. ...

  7. ubuntu16.04下sublime text 3之安装和配置

    1.安装方法 1)使用ppa安装 sudo add-apt-repository ppa:webupd8team/sublime-text-3 sudo apt-get update sudo apt ...

  8. Ubuntu14.04 安装 Sublime Text 3

    Linux下安装,一种办法是从官网下载 tar.bz ,手动安装.另一种是使用apt-ge安装 这里介绍用 apt-get 自动安装方法: 1.添加sublime text 3的仓库: sudo ad ...

  9. ubuntu 13.04下sublime text 3使用中文输入法

    主要思路参考 http://blog.yanwen.org/archives/1955.html libsublime-imfix.so 这个库自己编译和从他这下载的 md5一样.可以不用编译了.直接 ...

随机推荐

  1. POI之Excel导出

    1,在maven的pom文件中添加依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId& ...

  2. Ubuntu 16.04 (官方命令行)安装MongoDB 3.6.2(社区版)

    概述 使用本教程从 .deb 包在LTS Ubuntu Linux系统上安装MongoDB Community Edition. 虽然Ubuntu包含自己的MongoDB包,但官方的MongoDB社区 ...

  3. MSF基础攻击实践报告

    MSF基础攻击实践 MSF的六个模块:exploit,encoder,payload,aux,post,nops exploit——渗透攻击模块 测试者利用它来攻击一个系统,程序,或服务,以获得开发者 ...

  4. 20145325张梓靖 《Java程序设计》第2周学习总结

    20145325张梓靖 <Java程序设计>第2周学习总结 教材学习内容总结 整数 short 2字节,int 4字节,long 8字节 字节 byte 1字节 浮点数 float 4字节 ...

  5. SPOJ BALNUM Balanced Numbers(数位DP+状态压缩)题解

    思路: 把0~9的状态用3进制表示,数据量3^10 代码: #include<cstdio> #include<map> #include<set> #includ ...

  6. 【Java----统计字符串匹配个数】

    org.apache.commons.lang3.StringUtils包带的工具类 StringUtils.countMatches(context, keyword);

  7. RabbitMQ 消息传递的可靠性

    生产者保证消息可靠投递 消费者保证消息可靠消费 RabbitMQ持久化 参考:https://blog.csdn.net/RobertoHuang/article/details/79605185

  8. UVA-536 Tree Recovery (二叉树遍历)

    题目大意:给出对一棵二叉树先序遍历和中序遍历的顺序,找出后序遍历的顺序. 题目分析:无非就是对字符串的输出顺序做个变化,递归就行了. 代码如下: # include<iostream> # ...

  9. Meteor.js异步全解

    翻译来源: http://phucnguyen.info/blog/everything-you-need-to-know-about-async-meteor/ posted in Web Deve ...

  10. ansible入门02

    1.常用模块 1.1 group模块 添加或删除组             name=             state=:present(添加),absent(删除)             sy ...