允许Sublime编辑器在Ubuntu上输入中文
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上输入中文相关推荐
- Ubuntu下Sublime Text 3解决无法输入中文的方法
2019独角兽企业重金招聘Python工程师标准>>> 环境: Ubuntu14.04 搜狗输入法 for Linux Sublime text 3 提示:编译请在非root下进行 ...
- linux freemind字体,解决freemind在Ubuntu中输入中文问题
freemind是java程序,所以首先要解决java的中文字体解决问题,一般只要copy某个中文字体到jre的lib/fonts下某个文件夹就好了,如果用了多个jre,则需要确定用于运行freemi ...
- windows电脑上显示中文完好,新安装的办公系统上输入中文显示错误、无法显示中文
问题描述:在自己电脑是所有地方都能正常显示中文字体,却在新下载的公司OA办公软件中输入中文简体字无法准确显示,当输入一个字体时不能显示,输入多个字却显示其他不对应的字. 解决方法: 打开设置,找到下面 ...
- Ubuntu安装搜狗输入法无论如何就是找不到的解决方法///Ubuntu怎么安装搜狗输入法///Ubuntu怎么输入中文///Ubuntu搜狗输入法怎么修改皮肤
我刚装上ibus的时候,感觉一点也不好用,于是就换成了fcitx打算安装搜狗输入法for Linux, 结果各种方法都试过了,无论如何都找不到搜狗输入法,我偶然把fcitx5换成了fcitx4,结果意 ...
- Ubuntu系统输入中文方式
我目前知道Ubuntu有两个还算好用的中文输入法: Fcitx:它是Linux世界开源的输入法框架,提供 Google PinYin.ShuangPin.SunPinYin.Wubi.ZhengMa. ...
- ubuntu如何输入中文
右上角设置->区域与语言->输入源->点击+号添加 中文(智能拼音)
- ubuntu键盘输入中文延迟卡顿问题
转自 https://blog.csdn.net/xmzwlw/article/details/48287313?utm_medium=distribute.pc_relevant.none-task ...
- Sublime Text 3 史上最性感的编辑器
↑ ↑ ↑ ↑ ↑ 请看文件夹 ↑ ↑ ↑ ↑ ↑ 下载 / 安装 windows / MAC OS 官网下载,双击安装,这个都会吧- linux linux下安装,一种办法是从官网下载 tar.bz ...
- kali-linux 完美解决sublime输入 中文
kali-linux 完美解决sublime输入中文 在kali-linux 完成任何一件事情都是非常高兴的,对于长期使用window系统的人是个巨大的挑战. 对于sublime下载后出现不能输入中文 ...
最新文章
- python实现快排算法(quicksort)
- WWDC 2018:iOS 内存深入研究
- 利用gearman实现redis缓存mysql
- python运行非常慢的解决-为什么python运行的慢
- 编译Android VNC Server
- 使用gradle插件发布项目到nexus中央仓库
- B 站神曲 damedane:精髓在于换脸,五分钟就能学会
- Linux常用命令大全(持续更新)
- 【优化算法】多目标蜻蜓优化算法(MODA)【含Matlab源码 1350期】
- 如何从Unity商店下载资源?
- Python 爬虫 书籍爬取实例
- flashfxp连接centos7失败原因之一
- 刺激战场 枪支性能雷达图分析
- 代理是如何实现IP伪装的呢?
- 【JMeter】压测工具的使用
- Linux路由器的配置
- ucos II任务管理之一:挂起任务
- FPGA之简易频率计的设计
- 【极客赠书】向Richard Stallman提问,赢取传记《若为自由故》【活动结束】
- Spark 内存管理存储内存管理_尚硅谷大数据培训