完美解決 Linux 下 Sublime Text 中文輸入
參考Sublime Text官方論壇一位中國哥們的 回覆,通過以下方法完美解決Sublime Text 2中文輸入的問題。這幾天討論區老是有人提問,就寫個教程吧。
系統:Linux Mint 14 Nadia
輸入法:Fcitx 4.2.6.1 PPA。
1. 儲存下面的程式碼為sublime_imfix.c
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
/*
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. 編譯動態庫:
?1 |
gcc
-shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
|
(編譯環境和GTK的dev包請自行安裝)
3. 設定 LD_PRELOAD 並啟動 Sublime Text:
?1 |
LD_PRELOAD=. /libsublime-imfix .so sublime_text
|
為了不用每次啟動Sublime Text都打這麼一長串東西,寫了個啟動Sublime的指令碼:
?1 2 3 4 5 |
#!/bin/bash
SUBLIME_HOME= "/opt/sublime_text"
LD_LIB=$SUBLIME_HOME /libsublime-imfix .so
sh -c "LD_PRELOAD=$LD_LIB $SUBLIME_HOME/sublime_text [email protected]"
|
(把libsublime-imfix.so放到Sublime Text目錄下並修改指令碼中的SUBLIME_HOME)
輸入效果圖:
相關推薦
[轉載[完美解決 Linux 下 Sublime Text 中文輸入
.html void region sometimes pkg time pre install amp 原文地址: http://www.cnblogs.com/wangkongming/p/4302642.html 轉來備忘。 系統CentOS7.3 fcitx 中文輸
完美解決 Linux 下 Sublime Text 中文輸入
參考Sublime Text官方論壇一位中國哥們的 回覆,通過以下方法完美解決Sublime Text 2中文輸入的問題。這幾天討論區老是有人提問,就寫個教程吧。 系統:Linux Mint 14 Nadia輸入法:Fcitx 4.2.6.1 PPA。 1. 儲存下面的程式碼為sublime_imfi
完美解決 Linux 下 Sublime Text 3中文輸入
sublime很好用,但是ubuntu下不能輸入中文,這是一個很大的問題。 網上的方法各種樣。但是在終端執中開啟 sublime 事先設定 LD_PRELOAD 。 在這裡我提供一個個人認為最簡單的方法。 系統:ubuntu 14.04 輸入法:fcit
解決Linux下Sublime text 3的中文輸入問題
Sublime Text幾乎是我現在唯一用的程式碼&文字編輯器了,功能強大而又不失簡約。但其在Linux下對中文輸入不支援一直很讓人蛋疼,一般寫程式碼無所謂支不支援中文,但是我想把所有的文字工作都交給Sublime Text,這就必然離不開中文輸入了。 今天解決了一下它的中文支援問題,補丁方
解決linux下sublime text3無法輸入中文的情況
最近心血來潮,想在試試在linux上寫php是什麼感覺,但在使用sublimetext3時卻發現無法正常輸入中文,於是靠我大百度,各大論壇部落格,解決了這個問題。 百度經驗有解決方案,但是,編輯太馬虎了。。。。。。好多地方的“-”寫成了“_”,而
解決Ubuntu下Sublime Text 3無法輸入中文
sublime很好用,但是ubuntu下不能輸入中文,這是一個很大的問題。不知道為什麼開發著一直也不解決,好在還是有高手在,總能找到方法。網上方法很多,但是也很亂,現在我將自己的經驗總結一下。 首先,我參考了好幾篇文章,都是蠻不錯的,先列出來: 我的方法 1.下載我們需要的
[完美解決]mac下Sublime的vim模式,中文輸入法捕獲問題
sublime Text下面,可以相容vim模式,非常的方便 美中不足的是,mac下使用vim,會出現中文輸入法捕獲的問題。sublime下也不意外。 具體問題描述: 在sublime得vim模式下,如果在插入模式下使用的是中文輸入法(特別是在寫中
Ubuntu 之 Sublime Text 中文輸入 問題
參考網址 : https://github.com/lyfeyaj/sublime-text-imfix 1.依次執行如下命令,在上面git網址有usage用法,此處copy過來 sudo apt-get update && sudo apt-get upgrad
java amr格式轉mp3格式(完美解決Linux下轉換0K問題)
因專案需求,需要將 amr 格式的檔案轉成 mp3格式。 網路上提供的思路大多是使用jave-x-x.jar。 這個包確實有用,因為開發時是在windows環境中,測試轉換雖然報了異常: 1 it.sauronsoftware.jave.EncoderExcepti
Linux 下 Sublime Text 3 安裝 Godef 進行程式碼跳轉/跳回
GoSublime 外掛中的跳轉使用的是 GsDoc,只能跳轉包名點出來的成員和函式(例如 fmt.Println),很不方便後來發現了 Godef 這個外掛,可以實現任意物件跳轉(瞬間爽的飛起,此外,我還添加了跳轉回來的方法)以下記錄下安裝過程和遇到的問題1. 安裝 god
解決Ubuntu 16.04下Sublime Text 3無法輸入中文的問題
前言 sublime很好用,但是ubuntu下不能輸入中文,這是一個很大的問題。不知道為什麼開發著一直也不解決,好在還是有高手在,總能找到方法。網上方法很多,但是也很亂,現在我將自己的經驗總結一下。 首先,我參考了好幾篇文章,都是蠻不錯的,先列出來: 我的方法 1.下載我們需要的檔案,開啟終端,輸入: git
Ubuntu16.04下Sublime Text 3解決無法輸入中文的方法
參考文章: 百度經驗 oschina部落格 百度經驗中的注意點: 步驟二的第二步,若出現gtk/gtkimcontent.h沒有那個檔案或目錄的錯誤,參照oschina部落格 步驟五中的
解決openSUSE中Sublime Text 3的中文顯示和輸入問題
ase continue opensuse back .so文件 text 裏的 測試 mes Sublime Text 2是免安裝的,下載完解壓就可以了。我這邊解壓路徑是/home/fhp/App/SublimeText2 為了能在終端直接使用sublime
linux 下的 idea 無法輸入中文的解決辦法
RHEL7/CentOS7 下面的解決辦法: RHEL/Centos7下面的輸入法使用的是ibus架構。在/etc/profile後面增加如下配置資訊: export XIM="ibus" export XIM_PROGRAM="ibus" export XMODIFIERS="@im=ib
Ubuntu安裝Sublime Text並輸入中文
中文 bject data- gen 能夠 ppa microsoft windows bin Sumblime Text3是一款傳說中的神級代碼編輯器,具有
解決linux下Eclipse中文亂碼問題
已開通新的部落格,後續文字都會發到新部落格 http://www.0xfree.top --- 把Windows下的工程匯入到了Linux下Eclipse中,由於以前的工程程式碼,都是GBK編碼的(Windows下
解決linux下開啟windows .txt檔案中文亂碼問題
出現這種情況的原因為兩種作業系統的中文壓縮方式不同,在windows環境中中文壓縮一般為gbk,而在linux環境中為utf8,這就導致了在windows下能正常顯示 txt檔案在linux環境下開啟呈現了亂碼狀態。 解決方法:在linux用iconv命令,如亂碼檔名為test.txt,那麼
教你解決Sublime Text中文亂碼問題
Sublime Text 2是一個非常不錯的原始碼及文字編輯器,但是不支援GB2312和GBK編碼在很多情況下會非常麻煩。不過Sublime Package Control所以供的外掛可以讓Sublime Text 2幾乎完美地支援CJK編碼的文字。 然後使用Ctrl+Shift+P開啟命令列
Windows下Sublime text 編譯程式出現[Error 2] 的解決辦法
錯誤資訊[Error 2] [cmd: [u'bash', u'-c', u"g++ 'E:\\Wamp\\wamp\\c\\1.cpp' -o 'E:\\Wamp\\wamp\\c/1' && 'E:\\Wamp\\wamp\\c/1'"]] [d
解決Linux 下server和client 通過TCP通訊:accept成功接收卻報錯的問題
ipv4 socket error 實例代碼 ... lis col argc 例子 今天在寫簡單的TCP通訊例子的時候,遇到了一個問題:server 和client能夠連接成功,並且client也能夠正常發送,但server就是接收不到,在網上搜索一番後,終於解決了問