问题
在Debian(ubuntu或其他发行版也可以试试)系统中,安装Sublime Text 3(Build 3083)时,遇到无法输入中文的问题。
解决步骤
第一,下载源码:
从官网下载最新版ST3,我选择的是Ubuntu64 bit那一行对应的 tarball
版本。
第二,解压并安装:
sudo mv ~/下载/sublime_text_3_build_3083_x64.tar.bz2 /opt/
cd /opt/
tar vxjf sublime_text_3_build_3083_x64.tar.bz2
然后创建一个软链接,这样就可以在命令行中直接启动Sublime:
sudo ln -s /opt/sublime_text_3/sublime_text /usr/bin/sublime
此时,在终端输入sublime命令可以启动ST3,但是无法输入中文!经过不懈努力(把网上说的方法都试遍了),无意间在GitHub发现了一个仓库。此仓库可以解决我的问题!
第三,编译插件
首先是克隆这个仓库:
git clone https://github.com/Firef0x/SublimeText-i18n-zh.git
然后定位到 ~/SublimeText-i18n-zh/src/fix/imfix
再按照sublime_imfix.c中的注释来操作:
编译
gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
正常情况下会得到一个库文件libsublime-imfix.so
,如果编译需要的依赖不足的话请看看提示,然后将那些依赖升级。比较常见的问题是,提示 No package 'gtk+-2.0' found
没有,那么安装一下就行了:sudo apt-get install libgtk2.0-dev
使用
将 libsublime-imfix.so
拷贝到 /opt/sublime_text_3/
目录;
然后在终端下敲入 LD_PRELOAD=./libsublime-imfix.so sublime
来启动ST3
发现软件可以输入中文了!
第四,写脚本调用ST3
编写一个shell脚本,命名为:subl
,名字可以随便取。输入以下内容:
#!/bin/bash
LD_PRELOAD=/opt/sublime_text_3/libsublime-imfix.so sublime
然后放到 /usr/bin/
中就可以在任意目录中输入命令了:
sudo mv ~/subl /usr/bin/
注意:
subl
文件一定要给 755
权限
sudo chmod 755 ~/subl
总结
其实,我想编写一个可以传入参数的脚本来调用ST3,就像常用的命令那样,在命令后面输参数来实现不同的功能。
格式:
subl [文件或目录]
如果参数为目录,就打开带有以该目录为根目录的目录树的ST3窗口;
如果参数为文件,就打开这个文件。
当我以 sublime
(这个命令是以不调用Libsublime-imfix.so
的方式来启动ST3)命令加参数的方式调用ST3就可以实现上诉功能。本来是想实现subl
这个功能的,但是,学Shell还需要几天来适应,所以,只有留给大家来扩展了。
等我掌握了shell再来实现这个功能吧^.^