热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

Linux系统中SublimeText无法输入中文怎么办?:SublimeText是一个代码编辑器,拥有强大的功能,但SublimeText在Linux下运行的时候存在无法输入中文




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


 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”


  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 中输入中文了,是不是很简单呢?赶紧试试看吧。





推荐阅读
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • Ubuntu下Sublime Text 2的安装
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
author-avatar
非洲小蘑菇bp
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有