欢迎各位兄弟 发布技术文章
这里的技术是共享的
Sublime Text 是一款跨平台代码编辑器(Code Editor),从最初的 Sublime Text 1.0,到现在的 Sublime Text 3.0,Sublime Text 从一个不知名的编辑器演变到现在几乎是各平台首选的 GUI 编辑器。
从初学编程到现在,我用过的编辑器有 EditPlus、UltraEdit、Notepad++、Vim、TextMate 和 Sublime Text,如果让我从中推荐,我会毫不犹豫的推荐 Vim 和 Sublime Text,原因有下面几点:
跨平台:Vim 和 Sublime Text 均为跨平台编辑器(在 Linux、OS X 和 Windows 下均可使用)。作为一个程序员,切换系统是常有的事情,为了减少重复学习,使用一个跨平台的编辑器是很有必要的。
可扩展:Vim 和 Sublime Text 都是可扩展的(Extensible),并包含大量实用插件,我们可以通过安装自己领域的插件来成倍提高工作效率。
互补:Vim 和 Sublime Text 分别是命令行环境(CLI)和图形界面环境(GUI)下的最佳选择,同时使用两者会大大提高工作效率。
平时工作主要在 Linux 环境下使用 Java 和 Python,偶尔会用 HTML+CSS+JavaScript 编写网页;业余时会在 Windows 环境编写一些 C# 程序(包括控制台程序(Console Application)和移动应用(Mobile App),也会玩一些非主流语言(比如 Haskell,ML 和 Ruby 等)以拓展见识。
受益于 K&R C 的写作风格,我倾向于以实际案例来讲解 Sublime Text 的功能,所以本文中的例子均源于我在实际开发时遇到的问题。
编辑器面向无语义的纯文本,不涉及领域逻辑,因此速度快体积小,适合编写单独的配置文件和动态语言脚本(Shell、Python 和 Ruby 等)。
IDE 面向有语义的代码,会涉及到大量领域逻辑,因此速度偏慢体积庞大,适合编写静态语言项目(Java、C++ 和 C# 等)。
我认为应当使用正确的工具去做有价值的事情,并把效率最大化,所以我会用 Eclipse 编写 Java 项目,用 Vim 编写Shell,用 Sublime Text 编写 JavaScript/HTML/Python,用 Visual Studio 编写C#。
Sublime的牛逼之处在于提供了大量功能丰富的插件进行功能补强,用户可以根据自身需求和喜好定制自己的编辑环境,但是第一个问题就来了,如果你第一次使用Package Control这鬼东西,一定见过这样的错误。
There are no packagesavailable for installation
不要方,两步解决报错:
翻墙将channel_v3.json下载放到本地
在首选项>插件设置>Package Control>Settings User中增加如下配置项(本地channel_v3.json所在路径):
"channels":
[
"/Users/zoro/ghost/sublime_json_channel/channel_v3.json"//本地路径的位置
]
因为Sublime自带字体对中文不完美支持的缘故,让我们来试试微软雅黑字体吧!
首先我们需要下载并微软雅黑的字库
然后在首选项的用户设置输入以下代码:
"font_face": "YaHei Consolas Hybrid",
注意最后的逗号!
1、调用ctrl+shift+p,输入:sublimerepl选择并安装;(本机安装时候居然找不到这个sublimerepl,后来输入install package才调出来
2、然后 工具(tools)--sublimeREPL--Python你会发现打开了一个python的shell窗口,显然这个并不是我们想要的;
3、继续往下走,选择好我们要执行的py文件,选择 工具(tools) >SublimeREPL -> Python -> RUN current file,这时候已经支持输入了数据了;如下图所示:
4、为了调试方便,我们可以把这个窗口放到右边,先设置sublime的窗口显示为多层
5、最后,创建快捷键,在 首选项 -> 按键绑定-用户 里修改,注意:快捷键不要和ctrl+b冲突
[
# 这里我喜欢设置成ctrl+m
{"keys": ["ctrl+m"], "caption":"SublimeREPL:Python",
"command":"run_existing_window_command", "args":
{
"id":"repl_python_run",
"file":"config/Python/Main.sublime-menu"
}
},
与其他 GUI 环境下的编辑器不同,Sublime Text 并没有一个专门的配置界面,与之相反,Sublime Text 使用 JSON 配置文件,例如:
{ "font_size": 12, "highlight_line": true,}
会将默认字体大小调整为 12,并高亮当前行。
JSON 配置文件的引入简化了 Sublime Text 的界面,但也使得配置变的复杂,一般我会到 这里 查看可用的 Sublime Text 配置。
下面是我个人使用的设置项,倾向于Python开发,PEP8风格
{
"anaconda_gutter_theme": "alpha",
"anaconda_linter_mark_style": "none",
"caret_style": "phase",
"color_scheme": "Packages/Nil-Theme/Big Duo.tmTheme",
"default_encoding": "UTF-8",
"draw_white_space": "all",
"ensure_newline_at_eof_on_save": true,
"expand_tabs_on_save": true,
"font_face": "YaHei Consolas Hybrid",
"font_size": 15,
"highlight_line": true,
"highlight_modified_tabs": true,
"ignored_packages":
[
"Vintage"
],
"rulers":
[
80,
100
],
"tab_size": 4,
"theme": "Soda Dark 3.sublime-theme",
"translate_tabs_to_spaces": true,
"trim_trailing_white_space_on_save": true,
"update_check": false,
"word_wrap": "auto"
}
标签(Tab):无需介绍。
编辑区(Editing Area):无需介绍。
侧栏(Side Bar):包含当前打开的文件以及文件夹视图。
缩略图(Minimap):如其名。
命令板(Command Palette):Sublime Text 的操作中心,它使得我们基本可以脱离鼠标和菜单栏进行操作。
控制台(Console):使用 Ctrl + ` 调出,它既是一个标准的 Python REPL,也可以直接对 Sublime Text 进行配置。
状态栏(Status Bar):显示当前行号、当前语言和Tab格式等信息。
Sublime Text 的一大亮点是支持多重选择——同时选择多个区域,然后同时进行编辑。
Ctrl + D 选择当前光标所在的词并高亮该词所有出现的位置,再次 Ctrl + D 选择该词出现的下一个位置,在多重选词的过程中,使用 Ctrl + K 进行跳过,使用 Ctrl + U 进行回退,使用 Esc 退出多重编辑。Alt + F3:选中当前关键字出现的所有位置
多重选词的一大应用场景就是重命名——从而使得代码更加整洁。尽管 Sublime Text 无法像 IDE(例如 Eclipse)那样进行自动重命名,但我们可以通过多重选词+多重编辑进行直观且便捷的重命名:
有时我们需要对一片区域的所有行进行同时编辑,Ctrl + Shift + L 可以将当前选中区域,然后再打散,然后进行同时编辑:
有打散自然就有合并,Ctrl + J 可以把当前选中区域合并为一行:
这个在编写 python 经常遇到,比如对于一个大片区的代码,如果要控制片区往后移动只要选中之后再不断按 Tab 就可以了。
但如果需要回退的话,可能需要一行行调整,此时可以采用如下操作,先用 Ctrl + Shift + L 选中区域,然后按下左右按键不断调整,使得光标在纵向保持一致,然后统一向前删除 Tab即可实现片区回退,这个操作最好确保每行之间没有空行,否则会出现一些问题
Sublime Text 提供了强大的查找(和替换)功能,为了提供一个清晰的介绍,我将 Sublime Text 的查找功能分为 快速查找、标准查找 和 多文件查找 三种类型。
多数情况下,我们需要查找文中某个关键字出现的其它位置,这时并不需要重新将该关键字重新输入一遍然后搜索,我们只需要使用 Shift + ←/→ 或 Ctrl + D 选中关键字,然后 F3 跳到其下一个出现位置, Shift + F3 跳到其上一个出现位置,此外还可以用 Alt + F3 选中其出现的所有位置(之后可以进行多重编辑,也就是快速替换)。
另一种常见的使用场景是搜索某个已知但不在当前显示区域的关键字,这时可以使用 Ctrl + F 调出搜索框进行搜索,以及使用 Ctrl + H 进行替换。
对于普通用户来说,常规的关键字搜索就可以满足其需求:在搜索框输入关键字后 Enter 跳至关键字当前光标的下一个位置, Shift + Enter 跳至上一个位置, Alt + Enter 选中其出现的所有位置(同样的,接下来可以进行快速替换)。
Sublime Text 的查找有不同的模式:Alt + C 切换大小写敏感(Case-sensitive)模式, Alt + W 切换整字匹配(Whole matching)模式,除此之外Sublime Text还支持在选中范围内搜索(Search in selection),这个功能没有对应的快捷键,但可以通过以下配置项自动开启。
"auto_find_in_selection": true
这样之后在选中文本的状态下范围内搜索就会自动开启,配合这个功能,局部重命名(Local Renaming)变的非常方便。
使用 Ctrl + H 进行标准替换,输入替换内容后,使用 Ctrl + Shift + H 替换当前关键字, Ctrl + Alt + Enter 替换所有匹配关键字。
正则表达式 是非常强大的文本查找&替换工具,Sublime Text中使用 Alt + R 切换正则匹配模式的开启/关闭。Sublime Text的使用Boost里的Perl正则表达式风格。
出于篇幅原因,本文不会对正则表达式进行详细介绍,Mastering Regex(中译本:精通正则表达式)对正则表达式的原理和各语言下的使用进行了详细介绍。此外网上有大量正则表达式的优秀教程(“正则表达式30分钟入门教程” 和 MSDN正则表达式教程.aspx)),以及在线测试工具(regexpal 和 regexer)。
使用 Ctrl + Shift + F 开启多文件搜索&替换(注意此快捷键和搜狗输入法的简繁切换快捷键有冲突)
多文件搜索&替换默认在当前打开的文件和文件夹进行搜索/替换,我们也可以指定文件/文件夹进行搜索/替换。
Sublime Text 提供了强大的跳转功能使得我们可以在不同的文件/方法/函数中无缝切换。就我的使用经验而言,目前还没有哪一款编辑器可以在这个方面超越Sublime Text。
Ctrl + P 会列出当前打开的文件(或者是当前文件夹的文件),输入文件名然后 Enter 跳转至该文件。
需要注意的是,Sublime Text使用模糊字符串匹配(Fuzzy String Matching),这也就意味着你可以通过文件名的前缀、首字母或是某部分进行匹配:例如, EIS 、 Eclip 和 Stupid 都可以匹配 EclipseIsStupid.java 。
尽管是一个文本编辑器,Sublime Text 能够对代码符号进行一定程度的索引。Ctrl + R 会列出当前文件中的符号(例如类名和函数名,但无法深入到变量名),输入符号名称 Enter 即可以跳转到该处。
此外,还可以使用 F12 快速跳转到当前光标所在符号的定义处(Jump to Definition)。
比较有意思的是,对于 Markdown, Ctrl + R 会列出其大纲,非常实用。
Ctrl + G 然后输入行号以跳转到指定行
在 Ctrl + P 匹配到文件后,我们可以进行后续输入以跳转到更精确的位置:
@
符号跳转:输入 @symbol
跳转到 symbol 符号所在的位置
#
关键字跳转:输入 #keyword
跳转到 keyword 所在的位置
:
行号跳转:输入 :12 跳转到文件的第12行。
所以 Sublime Text 把 Ctrl + P 称之为 Go To Anything,这个功能如此好用,以至于我认为没有其它编辑器能够超越它。
从 Sublime Text 的初版(1.0)到现在(3.0 3065),中文输入法(包括日文输入法)都有一个问题:输入框不跟随。
目前官方还没有修复这个 bug,解决方法是安装 IMESupport 插件,之后重启 Sublime Text 问题就解决了。
Sublime Text 是一个多窗口多标签编辑器:我们既可以开多个Sublime Text窗口,也可以在一个Sublime Text窗口内开多个标签。
使用 Ctrl + Shift + N 创建一个新窗口(该快捷键再次和搜狗输入法快捷键冲突,个人建议禁用所有搜狗输入法快捷键)。
当窗口内没有标签时,使用 Ctrl + W 关闭该窗口。
使用 Ctrl + N 在当前窗口创建一个新标签, Ctrl + W 关闭当前标签, Ctrl + Shift + T 恢复刚刚关闭的标签。
编辑代码时我们经常会开多个窗口,所以分屏很重要。Alt + Shift + 2 进行左右分屏, Alt + Shift + 8 进行上下分屏, Alt + Shift + 5 进行上下左右分屏(即分为四屏)。
分屏之后,使用 Ctrl + 数字键 跳转到指定屏,使用 Ctrl + Shift + 数字键 将当前屏移动到指定屏。例如, Ctrl + 1 会跳转到1屏,而 Ctrl + Shift + 2 会将当前屏移动到2屏。
Sublime Text 有两种全屏模式:普通全屏和无干扰全屏。
个人强烈建议在开启全屏前关闭菜单栏(Toggle Menu),否则全屏效果会大打折扣。
F11 切换普通全屏
Shift + F11 切换无干扰全屏
Sublime Text 基本的手动格式化操作包括:Ctrl + [ 向左缩进, Ctrl + ] 向右缩进,此外 Ctrl + Shift + V 可以以当前缩进粘贴代码(非常实用)。
除了手动格式化,我们也可以通过安装插件实现自动缩进和智能对齐:
1.HTMLBeautify:格式化HTML。
2.AutoPEP8:格式化Python代码。
3.Alignment:进行智能对齐。
编写代码时会碰到大量的括号,利用 Ctrl + M 可以快速的在起始括号和结尾括号间切换, Ctrl + Shift + M 则可以快速选择括号间的内容,对于缩进型语言(例如Python)则可以使用 Ctrl + Shift + J 。
↑↓←→:上下左右移动光标,注意不是不是 KJHL !
Alt:调出菜单
Ctrl + Shift + P:调出命令板(Command Palette)
Ctrl + ` :调出控制台
Ctrl + Enter:在当前行下面新增一行然后跳至该行
Ctrl + Shift + Enter:在当前行上面增加一行并跳至该行
Ctrl + ←/→:进行逐词移动
Ctrl + Shift + ←/→进行逐词选择
Ctrl + ↑/↓移动当前显示区域
Ctrl + Shift + ↑/↓移动当前行
Ctrl + D:选择当前光标所在的词并高亮该词所有出现的位置,再次 Ctrl + D 选择该词出现的下一个位置,在多重选词的过程中,使用 Ctrl + K 进行跳过,使用 Ctrl + U 进行回退,使用 Esc 退出多重编辑
Ctrl + Shift + L:将当前选中区域打散
Ctrl + J:把当前选中区域合并为一行
Ctrl + M:在起始括号和结尾括号间切换
Ctrl + Shift + M:快速选择括号间的内容
Ctrl + Shift + J:快速选择同缩进的内容
Ctrl + Shift + Space:快速选择当前作用域(Scope)的内容
F3:跳至当前关键字下一个位置
Shift + F3:跳到当前关键字上一个位置
Alt + F3:选中当前关键字出现的所有位置
Ctrl + F/H:进行标准查找/替换,之后:
Alt + C:切换大小写敏感(Case-sensitive)模式
Alt + W:切换整字匹配(Whole matching)模式
Alt + R:切换正则匹配(Regex matching)模式
Ctrl + Shift + H:替换当前关键字
Ctrl + Alt + Enter:替换所有关键字匹配
Ctrl + Shift + F:多文件搜索&替换
Ctrl + P:跳转到指定文件,输入文件名后可以:
@
符号跳转:输入 @symbol
跳转到 symbol 符号所在的位置
#
关键字跳转:输入 #keyword
跳转到 keyword 所在的位置
: 行号跳转:输入 :12 跳转到文件的第12行。
Ctrl + R:跳转到指定符号
Ctrl + G:跳转到指定行号
Ctrl + Shift + N:创建一个新窗口
Ctrl + N:在当前窗口创建一个新标签
Ctrl + W:关闭当前标签,当窗口内没有标签时会关闭该窗口
Ctrl + Shift + T:恢复刚刚关闭的标签
F11:切换普通全屏
Shift + F11:切换无干扰全屏
Alt + Shift + 2:进行左右分屏
Alt + Shift + 8:进行上下分屏
Alt + Shift + 5:进行上下左右分屏
分屏之后,使用 Ctrl + 数字键 跳转到指定屏,使用 Ctrl + Shift + 数字键 将当前屏移动到指定屏。
来自 https://lovelijunyi.gitee.io/blog/blogs/工具软件/Sublime%20Text.html#屏幕