编辑器的选择(Editor Choices)html
从初学编程到如今,我用过的编辑器有EditPlus、UltraEdit、Notepad++、Vim、TextMate和Sublime Text,若是让我从中推荐,我会绝不犹豫的推荐Vim和Sublime Text,缘由有下面几点:java
安装(Installation)程序员
Sublime Text官方网站提供了Sublime Text各系统各版本的下载,目前Sublime Text的最新版本是Sublime Text 3。这里以Windows版本的Sublime Text安装为例。正则表达式
注意在安装时勾选Add to explorer context menu,这样在右键单击文件时就能够直接使用Sublime Text打开。express
使用Win + R
运行sysdm.cpl
打开“系统属性”。编程
而后在“高级”选项卡里选择“环境变量”,编辑“Path”,增长Sublime Text的安装目录(例如D:\Program Files\Sublime Text 3
)。json
接下来你就能够在命令行里面利用subl
命令直接使用Sublime Text了:windows
subl file :: 使用Sublime Text打开file文件 subl folder :: 使用Sublime Text打开folder文件夹 subl . :: 使用Sublime Text当前文件夹
前文提到Sublime Text支持大量插件,如何找到并管理这些插件就成了一个问题,Package Control正是为了解决这个问题而出现的,利用它咱们能够很方便的浏览、安装和卸载Sublime Text中的插件。sublime-text
进入Package Control的官网,里面有详细的安装教程。Package Control支持Sublime Text 2和3,本文只给出3的安装流程:bash
import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
Ctrl + Shift + P
打开命令板,输入PC
应出现Package Control:成功安装Package Control以后,咱们就能够方便的安装使用Sublime Text的各类插件:
Sublime Text是一个收费闭源软件,这在必定程度上成为了我支持Sublime Text的理由(我心中的软件靠谱程度:免费开源 << 免费闭源 < 收费开源 < 收费闭源):在这里购买。
不过不购买Sublime Text也能够“正常”使用它,只是Sublime Text会时不时的弹出一个对话框提醒你购买,此外窗口处会有一个很屌丝很low逼的(UNREGISTERED)。(在高频操做下,通常20分钟提示一次,我的认为算是很厚道了)
也许很多人会觉着Sublime Text 70刀的价格太贵,但相比它的功能和带来的效率提高,70刀真的不值一提,若是你不方便使用Paypal付款能够邮件联系我,你支付宝给我打款而后我帮你付款,价格按当日汇率折算(450元左右)。
Sublime Text的界面以下:
与其余GUI环境下的编辑器不一样,Sublime Text并无一个专门的配置界面,与之相反,Sublime Text使用JSON配置文件,例如:
{
"font_size": 12, "highlight_line": true, }
会将默认字体大小调整为12,并高亮当前行。
JSON配置文件的引入简化了Sublime Text的界面,但也使得配置变的复杂,通常我会到这里查看可用的Sublime Text配置。
Sublime Text的编辑十分人性化——它不像Vim那样反人类(尽管我也用Vim但我仍是要说Vim的快捷键设定绝壁连代谢产物都不如),少许的快捷键就能够完成绝大多数编辑任务。
↑↓←→
就是↑↓←→
,不是KJHL
,(没错我就是在吐槽Vim,尼玛设成WSAD
也比这个强啊),粘贴剪切复制均和系统一致。
Ctrl + Enter
在当前行下面新增一行而后跳至该行;Ctrl + Shift + Enter
在当前行上面增长一行并跳至该行。
Ctrl + ←/→
进行逐词移动,相应的,Ctrl + Shift + ←/→
进行逐词选择。
Ctrl + ↑/↓
移动当前显示区域,Ctrl + Shift + ↑/↓
移动当前行。
Sublime Text的一大亮点是支持多重选择——同时选择多个区域,而后同时进行编辑。
Ctrl + D
选择当前光标所在的词并高亮该词全部出现的位置,再次Ctrl + D
选择该词出现的下一个位置,在多重选词的过程当中,使用Ctrl + K
进行跳过,使用Ctrl + U
进行回退,使用Esc
退出多重编辑。
多重选词的一大应用场景就是重命名——从而使得代码更加整洁。尽管Sublime Text没法像IDE(例如Eclipse)那样进行自动重命名,但咱们能够经过多重选词+多重编辑进行直观且便捷的重命名:
有时咱们须要对一片区域的全部行进行同时编辑,Ctrl + Shift + L
能够将当前选中区域打散,而后进行同时编辑:
有打散天然就有合并,Ctrl + J
能够把当前选中区域合并为一行:
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 + H
替换全部匹配关键字。
正则表达式是很是强大的文本查找&替换工具,Sublime Text中使用Alt + R
切换正则匹配模式的开启/关闭。Sublime Text的使用Boost里的Perl正则表达式风格。
出于篇幅缘由,本文不会对正则表达式进行详细介绍,Mastering Regex(中译本:精通正则表达式)对正则表达式的原理和各语言下的使用进行了详细介绍。此外网上有大量正则表达式的优秀教程(“正则表达式30分钟入门教程”和MSDN正则表达式教程),以及在线测试工具(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支持以文件夹作为单位进行编辑,这在编辑一个文件夹下的代码时尤为有用。在File
下Open Folder
:
你会发现右边多了一个侧栏,这个侧栏列出了当前打开的文件和文件夹的文件,使用Ctrl + K, Ctrl + B
显示或隐藏侧栏,使用Ctrl + P
快速跳转到文件夹里的文件。
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
切换无干扰全屏:
风格对于任何软件都很重要,对编辑器也是如此,尤为是GUI环境下的编辑器。做为一个程序员,我但愿个人编辑器足够简洁且足够个性。
Notepad++默认界面
Sublime Text默认界面
因此在用过Sublime Text以后,我马上就卸掉了Notepad++。
Sublime Text自带的风格是我喜欢的深色风格(也能够调成浅色),默认主题是Monokai Bright
,这二者的搭配已经很不错了,不过咱们还能够作得更好:接下来我将会展现如何经过设置偏好项和添加自定义风格/主题使得Sublime Text更加Stylish。
下面是我我的使用的设置项。
// 设置Sans-serif(无衬线)等宽字体,以便阅读 "font_face": "YaHei Consolas Hybrid", "font_size": 12, // 使光标闪动更加柔和 "caret_style": "phase", // 高亮当前行 "highlight_line": true, // 高亮有修改的标签 "highlight_modified_tabs": true,
设置以后的效果以下:
Sublime Text有大量第三方主题:[https://sublime.wbond.net/browse/labels/theme],这里我给出几个我的感受不错的主题:
colorsublime包含了大量Sublime Text配色方案,并支持在线预览,配色方案的安装教程在这里,恕不赘述。
我我的使用的是Nexus主题和Flatland Dark配色,配置以下:
"theme": "Nexus.sublime-theme", "color_scheme": "Packages/Theme - Flatland/Flatland Dark.tmTheme",
效果以下:
优秀的编辑器使编码变的更加容易,因此Sublime Text提供了一系列功能以提升开发效率。
良好的代码应该是规范的,因此Google为每一门主流语言都设置了其代码规范(Code Style Guideline)。我本身经过下面的设置使以规范化本身的代码。
// 设置tab的大小为2 "tab_size": 2, // 使用空格代替tab "translate_tabs_to_spaces": true, // 添加行宽标尺 "rulers": [80, 100], // 显示空白字符 "draw_white_space": "all", // 保存时自动去除行末空白 "trim_trailing_white_space_on_save": true, // 保存时自动增长文件末尾换行 "ensure_newline_at_eof_on_save": true,
Sublime Text支持代码段(Code Snippet),输入代码段名称后Tab
便可生成代码段。
你能够经过Package Control安装第三方代码段,也能够本身建立代码段,参考这里。
Sublime Text基本的手动格式化操做包括:Ctrl + [
向左缩进,Ctrl + ]
向右缩进,此外Ctrl + Shift + V
能够以当前缩进粘贴代码(很是实用)。
除了手动格式化,咱们也能够经过安装插件实现自动缩进和智能对齐:
Sublime Text 支持必定的自动完成,按Tab
自动补全。
编写代码时会碰到大量的括号,利用Ctrl + M
能够快速的在起始括号和结尾括号间切换,Ctrl + Shift + M
则能够快速选择括号间的内容,对于缩进型语言(例如Python)则可使用Ctrl + Shift + J
。
此外,我使用BracketHighlighter插件以高亮显示配对括号以及当前光标所在区域,效果以下:
尽管提供了Python控制台,但Sublime Text的控制台仅支持单行输入,十分不方便,因此我使用SublimeREPL以进行一些编码实验(Experiments)。
尽管我试图在本文包含尽量多的Sublime Text实用技能,但受限于篇幅和个人我的经验,本文仍难免有所遗漏,欢迎在评论里指出本文的错误及遗漏。
下面是一些可能有用但我不多用到的功能:
我把本文出现的Sublime Text按其类型整理在这里,以便查阅。
↑↓←→
:上下左右移动光标,注意不是否是KJHL
!Alt
:调出菜单Ctrl + Shift + P
:调出命令板(Command Palette)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 + H
:替换全部关键字匹配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 + 数字键
将当前屏移动到指定屏