ubuntu下sublime使用搜狗输入法
安装搜狗输入法
把安装搜狗输入法记录下来,纯粹是因为第一次安装搜狗输入法遇到了大坑,按照百度经验,竟然在语言选择时候找不到。很悲情的是,除了猜测系统是32位外完全没有头绪。
64位ubuntu系统。查看命令:
uname -u
直接去搜狗官网下载输入法,双击进行安装。
终端输入
im-config
,对话框点击OK,知道出现一个列表框,选择fcitx
ok.然后重启。终端输入
fcitx-config-gtk3
,点击左下角的添加按钮,弹出框首先取消only show current language的勾选,然后输入sougou选中即可。此时在列表应该在最后。
sublime中使用搜狗拼音
- 保存
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 sublimeimfix.c pkg-config --libs --cflags gtk+-2.0
-fPIC
LDPRELOAD=./libsublime-imfix.so sublime_text
*/
include
include
typedef GdkSegment GdkRegionBox;
struct _GdkRegion { long size; long numRects; GdkRegionBox *rects; GdkRegionBox extents; };
GtkIMContext *local_context;
void gdkregiongetclipbox (const GdkRegion *region, GdkRectangle *rectangle) { greturniffail (region != NULL); greturnif_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 && GTKISIMCONTEXT(localcontext)) { gtkimcontextsetcursorlocation(localcontext, 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 eventfilter (GdkXEvent *xevent, GdkEvent *event, gpointer imcontext) { XEvent *xev = (XEvent *)xevent; if(xev->type == KeyRelease && GTKISIMCONTEXT(imcontext)) { GdkWindow * win = gobjectgetdata(GOBJECT(imcontext),"window"); if(GDKISWINDOW(win)) gtkimcontextsetclientwindow(imcontext, win); } return GDKFILTER_CONTINUE; }
void gtkimcontextsetclientwindow (GtkIMContext *context, GdkWindow *window) { GtkIMContextClass *klass; greturniffail (GTKISIMCONTEXT (context)); klass = GTKIMCONTEXTGETCLASS (context); if (klass->setclientwindow) klass->setclient_window (context, window);
if(!GDKISWINDOW (window)) return; gobjectsetdata(GOBJECT(context),"window",window); int width = gdkwindowgetwidth(window); int height = gdkwindowgetheight(window); if(width != 0 && height !=0) { gtkimcontextfocusin(context); localcontext = context; } gdkwindowaddfilter (window, event_filter, context); }`
- 安装编译环境:
>
sudo apt-get install build-essential
>sudo apt-get install libgtk2.0-dev
*在sublime-imfix.c
所在目录编译:
gcc -shared -o libsublime-imfix.so sublime-imfix.c
pkg-config --libs --cflags gtk+-2.0
-fPIC
产生mv libsublime-imfix.so $SUBLIME_HOME/
移动到的sublime的安装目录下。
*在安装目录下启动sublime:
LDPRELOAD=./libsublime-imfix.so ./sublimetext
就可以在sublime中输入中文了。
#如果要在启动栏中启动sublime,可以输入中文:
*找到sublime-text.desktop这个文件(user/share/applications),做以下改动(注意文件路径):
Exec=/usr/bin/sublime-text-2 %F
改为 Exec=bash -c 'LD_PRELOAD=/usr/lib/libsublime-imfix.so /usr/bin/sublime-text-2' %F
;
Exec=/usr/bin/sublime-text-2 --new-window
改为'Exec=bash -c 'LD_PRELOAD=/usr/lib/libsublime-imfix.so /usr/bin/sublime-text-2' --new-window'
不过遗憾的是这样设置后,发现文件不能鼠标右键打开sublime,只能open + o
。