惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
Recent Commits to openclaw:main
Recent Commits to openclaw:main
L
LangChain Blog
G
Google Developers Blog
GbyAI
GbyAI
Google DeepMind News
Google DeepMind News
Vercel News
Vercel News
Stack Overflow Blog
Stack Overflow Blog
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
DataBreaches.Net
C
Check Point Blog
月光博客
月光博客
MongoDB | Blog
MongoDB | Blog
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
WordPress大学
WordPress大学
M
MIT News - Artificial intelligence
博客园_首页
S
SegmentFault 最新的问题
The Cloudflare Blog
NISL@THU
NISL@THU
T
The Exploit Database - CXSecurity.com
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
H
Help Net Security
大猫的无限游戏
大猫的无限游戏
Spread Privacy
Spread Privacy
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
U
Unit 42
S
Schneier on Security
博客园 - 司徒正美
Help Net Security
Help Net Security
O
OpenAI News
PCI Perspectives
PCI Perspectives
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
Forbes - Security
Forbes - Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
News | PayPal Newsroom
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Threatpost
V
Vulnerabilities – Threatpost
美团技术团队
P
Palo Alto Networks Blog
TaoSecurity Blog
TaoSecurity Blog
V2EX - 技术
V2EX - 技术
IT之家
IT之家
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
I
InfoQ

博客园 - Mose

CS学习 NOI2002_ Galaxy银河英雄传说86 [Elite 2008 Dec USACO]Jigsaw Puzzles SGU 223 little kings BSOJ2772 状压DP BZOJ 3132(上帝造题的七分钟-树状数组求和+2D逆求和数组) 埃及分数 [usaco]2013-jan Liars and Truth Tellers 真假奶牛 【区间DP】codevs3657 括号序列题解 ubuntu安装php-curl拓展 MIT挑战(如何在12个月内自学完成MIT计算机科学的33门课程|内附MIT公开课程资源和学习顺序 大白话Docker入门(一) Hexo博客搭建全解 代码查重工具sim virtual judge 本地部署方案 POJ题目分类推荐 (很好很有层次感) [pascal入门]数组 [codecademy]fonts in css [codecademy]css Ubuntu录制gif动态图
解决Ubuntu下Sublime Text 3无法输入中文
Mose · 2017-03-10 · via 博客园 - Mose

前言

sublime很好用,但是ubuntu下不能输入中文,这是一个很大的问题。不知道为什么开发着一直也不解决,好在还是有高手在,总能找到方法。网上方法很多,但是也很乱,现在我将自己的经验总结一下。

首先,我参考了好几篇文章,都是蛮不错的,先列出来:

  1. sublime-text-imfix:首先推荐这个方法,最简单,但是在我的系统上有些问题。可用这个的强烈推荐用这个
  2. 完美解决 Linux 下 Sublime Text 中文输入:讲的比较明白,也可用参考。
  3. Ubuntu下Sublime Text 3解决无法输入中文的方法: 讲解的最清楚了,建议看看。

我的方法

1.下载我们需要的文件,打开终端,输入:

git clone https://github.com/lyfeyaj/sublime-text-imfix.git

2.将subl移动到/usr/bin/,并且将sublime-imfix.so移动到/opt/sublime_text/(sublime的安装目录)
终端输入:

cd ~/sublime-text-imfix
sudo cp ./lib/libsublime-imfix.so /opt/sublime_text/
sudo cp ./src/subl /usr/bin/

3.用subl命令试试能不能启动sublime,如果成功启动的话,应该就可以输入中文了。
终端输入:

LD_PRELOAD=./libsublime-imfix.so subl

4.但是这样子只能用上述命令行启动才能输入中文,我们需要更简单的办法,我选择新建一个shell脚本,很简单,就一句话。
sublime新建文件输入:

#!/bin/bash
LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so subl

然后将文件另存为sublime(注意:没有后缀),并且放到/home文件夹。

5.至此,所有工作完成了。想要启动,直接终端输入:bash ~/sublime,就可以启动sublime,并且能够输入中文。

6.如果不需要输入中文,直接按以前的方式打开即可。建脚本文件的目的就是方便打开能输入中文的sublime。

说明

这只是一个权宜之计,完美的解决办法还没有,只能等sublime开发者更新。
网上所谓的完美解决,还是有问题,比如如果更改桌面快捷方式,那么sublime的Browse Packages功能不能使用,当然,还有其他问题。为了正常使用,我就没改。当然如果你中文输入比较多,还是建议修改桌面快捷方式,毕竟那会方便很多,具体怎么样,自己取舍。

另外,输入法不跟框,暂时无解啊。

  1. 本经验目前在Ubuntu14.04环境下,已有搜狗输入法 for Linux和Sublime Text 3的情况下安装成功。

    Ubuntu下Sublime Text 3解决无法输入中文的方法

    END

解决方法步骤2

  1. 保存下面的代码到文件sublime_imfix.c(位于~目录)

    #include <gtk/gtkimcontext.h>

    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);

     g_object_set_data(G_OBJECT(context),"window",window);

     if(!GDK_IS_WINDOW (window))

       return;

     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);

    }

    Ubuntu下Sublime Text 3解决无法输入中文的方法

  2. 将上一步的代码编译成共享库libsublime-imfix.so,命令

    cd ~

    gcc -shared -o libsublime-imfix.so sublime_imfix.c  `pkg-config --libs --cflags gtk+-2.0` -fPIC

    這一步也許需要

    安装 C/C++ 的编译环境和 gtk libgtk2.0-dev

    sudo apt-get install build-essential
    sudo apt-get install libgtk2.0-dev

    Ubuntu下Sublime Text 3解决无法输入中文的方法

  3. 然后将libsublime-imfix.so拷贝到sublime_text所在文件夹

    sudo mv libsublime-imfix.so /opt/sublime_text/

    Ubuntu下Sublime Text 3解决无法输入中文的方法

  4. 修改文件/usr/bin/subl的内容

    sudo gedit /usr/bin/subl

    #!/bin/sh

    exec /opt/sublime_text/sublime_text "$@"

    修改为

    #!/bin/sh

    LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text "$@"

    此时,在命令中执行 subl 将可以使用搜狗for linux的中文输入

    Ubuntu下Sublime Text 3解决无法输入中文的方法

  5. 为了使用鼠标右键打开文件时能够使用中文输入,还需要修改文件sublime_text.desktop的内容。

    命令

    sudo gedit /usr/share/applications/sublime_text.desktop

    将[Desktop Entry]中的字符串

    Exec=/opt/sublime_text/sublime_text %F

    修改为

    Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text %F"

    将[Desktop Action Window]中的字符串

    Exec=/opt/sublime_text/sublime_text -n

    修改为

    Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text -n"

    将[Desktop Action Document]中的字符串

    Exec=/opt/sublime_text/sublime_text --command new_file

    修改为

    Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text --command new_file"

    注意:

    修改时请注意双引号"",否则会导致不能打开带有空格文件名的文件。

    此处仅修改了/usr/share/applications/sublime-text.desktop,但可以正常使用了。

    opt/sublime_text/目录下的sublime-text.desktop可以修改,也可不修改。

    Ubuntu下Sublime Text 3解决无法输入中文的方法

  6. 经过以上步骤我们能在Sublime中输入中文了。

    Ubuntu下Sublime Text 3解决无法输入中文的方法