Sublime Text编辑器使用什么GUI库?

66 投票
3 回答
45493 浏览
提问于 2025-04-16 23:50

我下载了一个叫做 sublimetext 的编辑器,我想知道里面用的是哪个图形用户界面(GUI)库。

在编辑器的可执行文件目录里,有一些文件名:

bz2.pyd
Microsoft.VC90.CRT.manifest   
msvcp90.dll
msvcr90.dll                   
PackageSetup.py
PackageSetup.pyc              
pyexpat.pyd                   
python26.dll
python26.zip                  
select.pyd
sublimeplugin.py              
sublimeplugin.pyc
sublimetext.exe               
unicodedata.pyd
unins000.dat                  
unins000.exe
_ctypes.pyd                   
_elementtree.pyd
_hashlib.pyd                  
_socket.pyd
_ssl.pyd     

我能从这些文件名中找到相关信息吗?

3 个回答

16

这可能不是用Python写的。你看到Python代码的原因是,用户可以用Python编写脚本或插件来扩展Sublime Text的功能。我猜它是用C++写的,使用GTK作为图形界面工具包。

29

稍微查了一下,发现它使用的是Sublime的图形界面。根据Debian的源代码包来看,这个界面是用C++写的。

不过,再运行一下Linux上的sublime_text这个程序,使用strings命令可以看到一些共享库(相当于Windows上的DLL文件),这可能表明它使用了gtk这个东西:

/lib/ld-linux.so.2
libgtk-x11-2.0.so.0
libgdk-x11-2.0.so.0
libatk-1.0.so.0
libgio-2.0.so.0
libpangoft2-1.0.so.0
libpangocairo-1.0.so.0
libgdk_pixbuf-2.0.so.0
libcairo.so.2
libpng12.so.0
libpango-1.0.so.0
libfreetype.so.6
libfontconfig.so.1
libgobject-2.0.so.0
libgmodule-2.0.so.0
libgthread-2.0.so.0
librt.so.1
libglib-2.0.so.0
libpthread.so.0
libdl.so.2
libutil.so.1
libm.so.6
libX11.so.6
libstdc++.so.6
libgcc_s.so.1
libc.so.6
libgio-2.0.so
libgio-2.0.so.0
module.so

这个链接也提到了gtk。

138

Sublime Text 2 主要是用 C++ 编写的,并且使用了一个自定义的用户界面工具包。作者 Jon Skinner 这样解释:

我一直想写一篇博客,详细讲讲这个,但像很多事情一样,我通常还是选择去编码。Sublime Text 2 几乎完全是用 C++ 写的(还有一点点 Objective C 用于 Cocoa 和 Python 用于插件)。编码通常比较简单:在一个平台上写代码(目前主要是在 Linux 上,但我经常切换平台),然后确保在其他地方也能编译通过。Sublime Text 2 本身使用了一个自定义的用户界面工具包。虽然有很多应用程序可能不需要这样做,但对于 Sublime Text 来说,这样选择并不算不合理,因为我早就知道很多用户界面控件无论使用什么工具包都必须是自定义的(比如文本控件和标签控件)。这个用户界面工具包建立在一个跨平台的抽象层之上,这个抽象层更像是不同平台功能的结合,而不是最低的共同点。

撰写回答