前两天突发奇想,想知道现在越来越流行的 Sublime Text 除了易于上手外,和 Vim 相比还有哪些独到的特性呢?
于是我在 SegmentFault 上提出了这么一个问题,最终的答案整理如下。括号中是项目数,由很简单的 Vim 命令统计或者目测完成。
Sublime Text 能做的,Vim 在不做任何配置、或仅作极少量的配置也能做到的(16):
- ST: 随时保留文件的修改 / 自动保存。
-
Vim:
- 当意外退出时,默认在最后四秒内的最多200字符可能会丢失。这两个数值都是可以配置的。
- 设置 'autowriteall',在需要保存文件时会自动保存文件。
- ST: 按 HTML 标签选择。
-
Vim:
vit
,vat
,v2it
等。各种文本对象。 - ST: CSS 的属性名称自动完成。
- Vim: CSS 属性名称和值的智能补全。
- ST: 会话保持。
-
Vim:
:mksession
以及:source
。当然很容易配置成自动化的。 - ST: 跨平台。
- Vim: 把 ST 支持平台数平方一下。
- ST: 变身:Vim 模式。
- Vim: 变身:简易模式。
- ST: 多文件搜索。
-
Vim:
:vimgrep
命令。还有 grep.vim、ag.vim。 -
ST: 在跳转框内使用
:
到达指定行。 -
Vim: 行号+
G
或者:行号
(并回车)。 - ST: 并列显示多个文件。
- Vim: 不仅支持各种布局的多窗口,还支持多标签页。
- ST: 界面干净。
-
Vim:
guioptions
想去掉什么就去掉什么。 - ST: 简易的编辑快捷键,如删除单词删除行头行尾。
-
Vim:
daw
,d^
,d$
,还想要什么?。 - ST: 早期版本底部多出一个版面的空间,可以把代码最后的几千显示在窗口上半部分。
-
Vim:
z.
把当前行放到窗口中间。Ctrl-E / Ctrl-Y 来滚动显示的行。 - ST & Vim: 已拼单词提示/关键字补全。自动缩进。快捷键。命令行。
Sublime Text 能做的,Vim 在安装额外的插件或者适当配置后也能做到的(8):
- ST: 快捷键切换注释。
- Vim: 多个插件都可以,如 EnhCommentify。
- ST: 按照文件名称首字母搜索。
- Vim: 多个插件都可以,如 LustyExplorer(按文件名子序列搜索)、Command-T(在当前目录下递归地搜索)。
- ST: HTML片断快速插入。
- Vim: neosnippet、snipMate 等。
- ST: Livereload 插件,网页修改后可直接查看效果。
- Vim: 使用 BufWritePost 事件通知浏览器刷新。或者直接使用 inotify 等技术监听文件更新。
- ST: 侧栏管理项目目录。
- Vim: 自带 netrw 插件、更强大的 NERD tree。
- ST: 多行移动。
-
Vim: 进可视模式
d
了再到需要的位置p
就可以,不过还是有些麻烦。可以把以下配置复制到你的 vimrc 中:" 上下移动一行文字 nmap <C-j> mz:m+<cr>`z nmap <C-k> mz:m-2<cr>`z vmap <C-j> :m'>+<cr>`<my`>mzgv`yo`z vmap <C-k> :m'<-2<cr>`>my`<mzgv`yo`z
- ST: 括号自动匹配。
- Vim: 有几个插件。我不推荐使用这种功能。
- ST & Vim: Zencoding。
Sublime Text 能做的,但是 Vim 还不能完全做到的(5):
- ST: 多重光标选择,同时修改。
-
Vim: 列模式。正则替换。
.
重复单个命令。使用宏来重复连续的多条命令。 - ST: 简单全面的插件体系。
- Vim: vim-addon-manager、Vundle、Bundle 等。
- ST: UI 清亮。
- Vim: 非 Windows 平台上的 GUI 版本也挺不错。Windows 版本的字体渲染很糟糕。
- ST: 按名称搜索命令并执行。
- Vim: 传统的命令行补全。
- ST: 快。
- Vim: 少装些插件,避免使用复杂的语法高亮。
Sublime Text 能做的,但是 Vim 还不能做到的(5):
- ST: 代码地图 / Minimap。
- Vim: 无。不过有好些人表示 taglist / tagbar 之类的比这个好看的缩略图更中用。
- ST: 「经常友好地弹一个窗口,提醒用户付费。」
- Vim: 默认在启动时会希望你给乌干达的儿童捐款。
- ST: 「如果作者不幸挂掉,将会有一大波程序员陷入悲痛。」
- Vim: 如果作者不幸挂掉,将会有一大波程序员尝试成为新的维护者。
- ST: Linux 下的中文显示可能有问题,不支持输入法。
- Vim: 如果其它程序中没有问题,那么在 Vim 中也不会有问题。
- ST: 小巧。安装后大小:14277.00 KiB。
- Vim: 带 GTK 2 图形界面、多种解释器支持的巨型版本安装后大小:28056.00 KiB。
后记
我当然是不会换用 Sublime Text,除非其出正式版本并对用户的数据表现出一个负责的态度。
markdown 不支持描述性列表好讨厌啊,逼我用 Vim 的宏来修正么 :-( 以后这种复杂的内容还是部分用 HTML 吧,简单的部分用 markdown 写了再通过 Vim 的「filter」功能送给 markdown 好了。
本页用到了仅火狐 21+ 支持的 HTML 5 特性:Scoped CSS。