国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
解決 ibus 在 gVim/Emacs 下不能使用的問題 ? Free Mind

解決 ibus 在 gVim/Emacs 下不能使用的問題

ibus 是 Linux 下一個比較新的輸入法框架,其下的ibus-pinyin 也是比較不錯的一個輸入法,不過整個項目相對來說還是比較新,所以偶爾也還會有一些小問題,并不是詭異的 bug或者是開發(fā)難度上不可行,只是大概還有跟多優(yōu)先級更高的模塊需要處理,比如之前說過的用 Ctrl 切換中英文狀態(tài)的問題。事實上如果只是自己用的話,做一點小小的 dirty hack 也是非常方便的事情,因為 ibus 是用 Python 寫的,直接修改系統(tǒng)中對應的文件即可,甚至都不用重新編譯。

如題目所說,今天要解決的問題是 ibus 在 gVim 和 Emacs 下不能使用的問題。先說 Emacs吧,這個似乎是一個老問題了,癥狀就是在 Emacs 里不能激活輸入法,好像從數(shù)年前開始就一直都有類似的問題,包括 scim、 fcitx等眾多輸入法在內(nèi)都有過類似的問題,似乎是一部分 Gnome 用戶會遇到,在 Emacs里無法激活輸入法,但是也有另外一些人正常使用,所以后來似乎也沒弄明白原因,這里的問題我也不確定是不是同一個,但是癥狀確實挺像。

事實上,在 en_US 的 locale 下要使用輸入法的話,通常需要修改一下 /etc/gtk-2.0/gtk.immodules (不同的發(fā)行版該文件的位置可能不太一樣),把如下的一行

"xim" "X Input Method" "gtk20" "/usr/share/locale" "ko:ja:th:zh"

加進去一個 en 變成:

"xim" "X Input Method" "gtk20" "/usr/share/locale" "en:ko:ja:th:zh"

這樣就可以在 en_US 的 locale 下使用輸入法了,不過,在 Emacs 里還是無法激活,經(jīng)過在論壇上的討論,我被告知可以通過把 LC_CTYPE 設置為 zh_CN 才可以在 Emacs 里使用輸入法,例如,可以通過如下方式啟動 Emacs :

LC_CTYPE=zh_CN.utf8 emacs

至于具體為什么必須要這樣才行,我也沒有再去深究,畢竟問題得到解決就可以了。

再就是 gVim 里的問題,癥狀和 Emacs 里不一樣,輸入法可以激活,但是輸入了一兩個字母之后輸入法立馬就被關(guān)掉了。目測因該是由于嵌入式編輯和 gVim 起了沖突的緣故。

嵌入式編輯我也不知道用一個什么名字來稱呼它好,就是在輸入拼音的時候在編輯框內(nèi)直接填上現(xiàn)在已經(jīng)確定了的漢字,我最早見到這種輸入方式是在微軟拼音中,后來 SCIM也支持這種方式,但是由于對它深惡痛絕,從來都是關(guān)掉的,因為待輸入的文本框可能的樣式千奇百怪,輸入法并不能完全去適應,既然已經(jīng)可以在一個輸入條中顯示出中文了,為什么還要嵌入到編輯框中去呢?如圖所示,下面的光標如果在詞 english前面想要輸入中文,那么嵌入式的預編輯的文本會直接“覆蓋”掉單詞 english的前半部分,當然這只是顯示上的“覆蓋”,實際的文本并沒有被修改,但是我覺得也是不太友好的,既然沒法做好,而且也有在輸入條里的很直觀的顯示,為何還要這么多此一舉呢?當然,最關(guān)鍵的問題是它在某些情況下似乎會和 gVim 發(fā)生沖突。

說是在某些情況下,是因為我在兩個機器上一個可以正常使用一個卻不可以,不太確定是不是程序版本的問題,不過我現(xiàn)在可以通過關(guān)閉這個叫做 preedit 的東西來解決這個問題。原本因該像 SCIM 那樣可以有一個選項選擇關(guān)閉的,不過 ibus 的選項面板里還沒有加入這個選項,于是我就直接暴力地修改一下好了,打開 /usr/share/ibus-pinyin/engine/pinyin.py ,找到 update_preedit 函數(shù)的定義:

def update_preedit(self, preedit_string, preedit_attrs, cursor_pos, visible):
if preedit_attrs == None:
preedit_attrs = ibus.AttrList()
attr = ibus.AttributeUnderline(ibus.ATTR_UNDERLINE_SINGLE, 0, len(preedit_string))
preedit_attrs.append(attr)
 
super(PinYinEngine, self).update_preedit_text(ibus.Text(preedit_string, preedit_attrs), cursor_pos, visible)

廢掉它,比如,在第一行加一個 return 或者把最后一行的 super 調(diào)用注釋掉。保存之后在 ibus 的托盤圖標那里選擇 restart 就可以了。

不過這樣的暴力修改也是有一些副作用的,因為 ibus-pinyin 對于不合法的拼音片段并不會在面板上顯示出來,比如 i ,關(guān)閉 preedit 之后在中文狀態(tài)下輸入 i 看不到任何反饋,不過這幾乎不影響使用,而且我覺得這似乎是 ibus-pinyin 在顯示的設計上需要修改的地方,對于一些習慣直接輸入單詞再回車上屏的人估計就不太方便了。

總的來說,ibus-pinyin 還是一個不錯的輸入法的,希望能好好發(fā)展,爭取讓 Linux 下的輸入法不要再和 Windows 下差距那么大。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
BT裝中文輸入法[轉(zhuǎn)]
Linux Mint 16安裝中文輸入法
ubuntu 13.10使用fcitx輸入法
UBUNTU安裝搜狗云輸入法
Ubuntu下的中文輸入法ibus
Ubuntu的搜狗輸入法安裝步驟
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服