网上有流传Linux下安装Sublime居然不能输入中文,今天安装Sublime果然也遇到了这个问题;在GitHub找到了一个解决办法。按补丁的要求,在终端里输入subl
,嗯没错,根本找不到这个命令;照理来说我应该就不能安装这个补丁了。然后我翻了翻这个项目的两个脚本,发现其实挺简单的问题。
以下是折腾的全过程:
- 首先你得把这个项目克隆下来,我是放到~/Downloads下的,下载好之后打开~/Downloads/sublime-text-imfix目录;
- 然后按要求运行
./sublime-imfix
脚本,接着终端里瞬间问我,没见着你安装Sublime,要哥给你装个吗(It seems you do not install Sublime Text 3 in your system.Do you want to install it? [Y/N]:N )? - 真瞎
- 思考了一下,我打开了这个sublime-imfix看了看,第4行赫然写着:
if which subl
- 那么问题来了,其实我是没学过shell的,它跟bash是什么关系我至今不懂,可是根据下文的意思来猜,似乎这个脚本的意思就是只要在终端里输入subl就能启动Sublime
-
我们知道,要想在终端里输入一个命令就能启动一个什么东西,这个东西一定是放在一个bin目录里的,那么,就让我来试一试
sudo find / sublime | grep sublime
- 刷出一屏幕我看不懂的东西,其中有一个叫:
/usr/bin/sublime-text-dev
我把这一行复制粘贴到了命令行里,然后我家Sublime就跳出来啦~接下来只要把之前那个脚本里的所有subl全部替换成sublime-text-dev就可以解决啦……
可是一个好剧本怎么能这么简单
- 让我们执行一下之前那个脚本来完成“Sublime不能输入中文癌”的治疗吧
~/Download/sublime-text-imfix/sublime-imfix
- 哈哈,这脚本跐溜地完成了,让我们来启动一下sublime……啊嘞……无论我怎么点击图标,sublime就是不出现了……
- 搞事啊!!!
- ……好的,让我们看看之前究竟发生了些什么……翻看之前的安装记录的时候我发现了这样两行东西(由于装好了就把窗口关了,所以没有截图,也只能说个大概的意思)
./src/sublime-text-dev未找到
/opt/sublime_text/libsublime-imfix.so未找到 - 好吧我写到这里已经有点累了,我就平实一点说吧
./src/sublime-text-dev
这个问题其实很简单,在安装脚本里的subl
其实不仅仅指/usr/bin
里那个并不存在的subl
,还指这个补丁目录下./src
里用于替换/usr/bin/subl
的subl
脚本(这几句话可能有点绕,自己理解一下吧)。所以,接下来我干的事就是把./src/subl
的文件名换成了./src/sublime-text-dev
。/opt/sublime_text/libsublime-imfix.so
的问题更简单了,因为我安装的是ST3,所以打开sublime-imfix
脚本把相关内容改成/opt/sublime_text_3/libsublime-imfix.so
就行了(这个文件夹也是之前用sudo find / sublime | grep sublime
找到的)-
这里我再插入一个我瞄到的细节,由于
sublime-imfix
脚本里存在这样几行:if [ -e '/usr/bin/sublime-text-dev' ] then sudo rm /usr/bin/sublime-text-dev fi sudo cp ./src/sublime-text-dev /usr/bin/
而我比较了
/usr/bin/sublime-text-dev
和./src/sublime-text-dev
的内容之后,发现前者(原版)内容完全包括后者(补丁版),还比它更丰富,所以决定保留原始内容,故,把上面找到的这五行全都注释掉了。 -
再后来运行的时候死活找不到sublime-text-dev,总是说我没有安装ST3,所以我重装了一下,最后再次运行了这个脚本。
- 然后,就能输入汉字啦
后记:实际上有些小问题,现成的解决方案不能满足自己的时候,可以尝试一下,说不定并不是兼容性问题那么大的事情,只是路径和文件名不同而已。