毕业忙活了几个月,开始学习。
ubuntu下原生的sublime text3编辑器不支持中文输入,需要手动设置,参考了别人的做法,修改了一些错误,写一个小的总结。
sublime text 安装在哪里?
平时使用subl
,记得当时是直接用apt-get
安装的,安装路径都是默认的,用命令where
查看一下:1
where subl
结果是:
/usr/bin/subl
但是在bin
目录下查看,只有一个subl文件,编辑器的安装文件不在这里.
用locate命令查找subl,结果出来一大堆,也分不清路径.
想不起来以前是怎么安装的了,用history命令查看一下关于sublime的安装命令.1
history | grep sublime
偶然发现之前尝试过添加中文输入支持,但是忘记为啥没有继续,然后查找编译好的动态链接库的位置.1
locate libsublime-imfix.so
定位到sublime的安装目录:
/opt/sublime_text/libsublime-imfix.so
查看sublime的安装目录下的文件:1
ls -l
有下面几个文件:
-rw-r—r— 1 root root 21K 3月 26 2015 changelog.txt
-rwxr-xr-x 1 root root 186K 3月 26 2015 crash_reporter
drwxr-xr-x 7 root root 4.0K 6月 25 2015 Icon
-rwxrwxr-x 1 alex alex 13K 6月 25 2015 libsublime-imfix.so
drwxr-xr-x 2 root root 4.0K 6月 25 2015 Packages
-rwxr-xr-x 1 root root 4.1M 3月 26 2015 plugin_host
-rw-r—r— 1 root root 2.6M 3月 26 2015 python3.3.zip
-rw-r—r— 1 root root 19K 3月 26 2015 sublime_plugin.py
-rw-r—r— 1 root root 32K 3月 26 2015 sublime.py
-rwxr-xr-x 1 root root 4.9M 3月 26 2015 sublime_text
其中sublime_text
文件就是subl
实际执行的二进制文件,用file命令查看文件类型file sublime_text
sublime_text: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=11efbc08b500cd7e41437fe0f7826b584b3e1663, stripped
可以看出是一个ELF文件,就是可执行文件。
也可以查看subl
文件类型file subl
subl: POSIX shell script, ASCII text executable
可以看出是一个脚本文件,也就是纯文本文件,打开看看。
#!/bin/sh
exec /opt/sublime_text/sublime_text “$@”
明白了所以然。。。
添加中文输入支持
找到了文件的位置,就可以按照网上的教程添加中文支持了,一些文件在https://github.com/zhangxiaoya/sublimeCN。
安装依赖项
1
sudo apt-get install build-essential libgtk2.0-dev
编译生成动态链接库,(源码在附录)
1
gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
拷贝
将生成的libsublime-imfix.so文件拷贝到sublime的安装目录,sublime的安装目录是在
/opt/sublime_text
- 修改启动命令
要想使得sublime支持输入中文,就必须加载刚刚生成的动态链接库,可以在在启动的时候,使用命令添加,比如在sublime的安装目录(当前目录的路径是 ‘’.’’),执行下面的命令,
1 | LD_PRELOAD=./libsublime-imfix.so ./sublime_text |
这样每次启动的时候都使用绝对路径加载动态链接库,有些麻烦。
平时都是使用subl命令,实质上subl是一个具有执行权限的文本文件,用vim打开并编辑。(用where命令查找subl的绝对路径)
1 | sudo vim /usr/bin/subl |
在执行sublime_text命令之前,添加预加载命令
1 | LD_PRELOAD=./libsublime-imfix.so |
这样在每次输入命令subl命令时就预加载中文输入的动态链接库了。
附录
1 | //* |