安装插件
可以把插件下载后,放进目录 ~/.config/sublime-text-2/Packages。
这个目录可以通过过 Preferences->Browse Packages 打开。如安装ctags插件:
cd ~/.config/sublime-text-2/Packages git clone git://github.com/SublimeText/CTags.git
也可以通过Sublime Package Control来安装,首先去安装 Package Control, http://wbond.net/sublime_packages/package_control,安装方法上面有。
装好后,按 Ctrl+Shift+P 打开命令面板,输入Package,找到 Install Package,回车后会加载插件列表,然后搜索想要的插件安装就好了。
配置文件
Preferences->Settings-User :
{
"color_scheme": "Packages/Color Scheme - Default/Monokai Bright.tmTheme",
"line_padding_bottom": 1,
"line_padding_top": 1,
"margin": 4,
"word_wrap": true,
"font_face": "WenQuanYi Micro Hei Mono",
"ignored_packages":
[
"Vintage" //如果将这个注释掉,就可以用vim的快捷键啦
],
"highlight_line": true //选中行高亮
}
sublime也可以支持vim的很多快捷键,基本上常用的都可以,所以开启后直接就像vim一样地用了,对于我这样的vim控来说,真爽。
一些插件
Ctags 不用说,用过vim的都应该知道,可以跳转到函数定义等
DocBlockr 用来写doc文档,如php的函数doc注释
InputHelper 解决ubuntu下面ibus输入法不能输入中文问题,虽然不完美,但凑合用
sublime-jsdocs 也是用来生成doc文档的
sublime-phpunit(https://github.com/florianeckerstorfer/sublime-phpunit) phpunit的支持,可以自动弹出一些assert函数等。
alignment 代码自动对齐插件,选中然后 ctrl+alt+a
SublimeCodeIntel 此插件的作用主要是即时代码补全
BracketHighlighter 用于高亮成对符号(引号、括号、标签)的工具。
想要将ctags生成的关键词加入到sublime自动提示里面去,也就是自动提示ctags文件,在~/.config/sublime-text-2/Packages中创建一个文件 ctags_autocomplete.py,内容如下:
# CTags based autocompletion plugin for Sublime Text 2
# You can add the file to the User Package in ~/Library/Application Support/Sublime Text 2/Packages and restart Sublime Text 2.
# generate the .tags file in your project root with "ctags -R -f .tags"
import sublime, sublime_plugin, os
class AutocompleteAll(sublime_plugin.EventListener):
def on_query_completions(self, view, prefix, locations):
tags_path = view.window().folders()[0]+"/.tags"
results=[]
if (not view.window().folders() or not os.path.exists(tags_path)): #check if a project is open and the .tags file exists
return results
f=os.popen("grep -i '^"+prefix+"' '"+tags_path+"' | awk '{ print $1 }'") # grep tags from project directory .tags file
for i in f.readlines():
results.append([i.strip()])
results = [(item,item) for sublist in results for item in sublist] #flatten
results = list(set(results)) # make unique
results.sort() # sort
return results
上面的方法是手动 DIY,可以大致了解sublime插件开发,后来我发现ctags这个插件本身已经集成这个功能的代码,只是默认配置里面关闭了,https://github.com/SublimeText/CTags/blob/master/CTags.sublime-settings,我们只需要修改~/.config/sublime-text-2/Packages/CTags/CTags.sublime-settings,将
"autocomplete": false,
改成
"autocomplete": true,
对于上面这段代码,可以看出每次进行自动提示的时候都会去读tags文件,可以优化成第一次读好后缓存起来,我改了一下:
#~/.config/sublime-text-2/Packages/CTags/ctagsplugin.py
class CTagsAutoComplete(sublime_plugin.EventListener):
alltags = []
def on_query_completions(self, view, prefix, locations):
if setting('autocomplete'):
prefix = prefix.strip().lower()
tags_path = view.window().folders()[0]+"/.tags"
if self.alltags:
# print 'get from self'
results = [sublist for sublist in self.alltags if sublist[0].lower().startswith(prefix)]
results = list(set(results))
results.sort()
return results
else:
# print 'get all tags'
tags = []
f=os.popen("awk '{ print $1 }' '" + tags_path + "'")
for i in f.readlines():
tags.append([i.strip()])
tags = [(item,item) for sublist in tags for item in sublist] #flatten
tags = list(set(tags)) # make unique
tags.sort()
self.alltags = tags
results = [sublist for sublist in self.alltags if sublist[0].lower().startswith(prefix)]
results = list(set(results))
results.sort()
return results
上面的实现会有一个问题,就是我重新生成ctags文件以后,新生成的东西不会生效,因为只会第一次加载的时候去读ctags文件。我们要修改一下,当运行rebuild_tags命令的时候,把我们加载的ctags列表清空。
首先写一个类用于保存加载好的ctags关键字列表:
class GetAllCTagsList():
ctags_list = []
"""get all the ctags list"""
def __init__(self, list):
self.ctags_list = list
然后把上面的代码改成从GetAllCTagsList获取加载的列表:
# if self.alltags:改成 if GetAllCTagsList.ctags_list: # self.alltags = tags改成 GetAllCTagsList.ctags_list = tags
最后,在重新生成ctags类中添加一句代码,把GetAllCTagsList中的ctags_list变量清空:
class rebuild_tags(sublime_plugin.TextCommand):
def run(self, edit, **args):
# 中间代码省略
GetAllCTagsList.ctags_list = []
以上修改我已经提交到github:https://github.com/SublimeText/CTags/pull/108
快捷键
Ctrl+/ 注释
Ctrl+D 选中光标所在字符串 (按住继续选择下个相同字符串)
Alt+F3 选中与光标处相同的全部词
Ctrl+M 光标移动至括号前或后
Ctrl+Shift+M 选中括号内的内容(按住继续选中前后括号)
Ctrl+L 选中行(按住继续选中下行)
Ctrl+J 合并行
Ctrl+Shift+↑ 与上行互换
Ctrl+Shift+K 删除整行
Ctrl+Shift+D 复制整行
Ctrl+Shift+L 同时编辑所选行
Ctrl+K,Backspace 从光标处删除至行首
Ctrl+K,K 从光标处删除至行尾
Ctrl+Enter 光标所在行后插入行
Ctrl+Shift+Enter 光标所在行前插入行
Ctrl+F2 设置书签
F2 下一个书签
Shift+F2 上一个书签
Alt+Shift+2 窗口两列显示
Alt+Shift+8 窗口两行显示
Ctrl+K,B 开启/关闭侧边栏,按住 Ctrl 、按 K 、松开、再按 B ;
Ctrl+PageDown 、Ctrl+PageUp 文件按开启的前后顺序切换
Ctrl+P 快速搜索切换文件,再输入 @ 查找文件主标题/函数;或者输入 :,跳转到文件某行;
ubuntu中将sublime加入命令行
sudo ln -s ~/Sublime\ Text\ 2/sublime_text /usr/bin/sublime
将sublime添加到ubuntu的启动器中,在/usr/share/applications中新建一个sublime.desktop的文件:
#!/usr/bin/env xdg-open
[Desktop Entry]
Name=Sublime Text 2
Comment=Sublime Text 2
Exec=/home/serho/tools/"Sublime Text 2"/sublime_text
Icon=/home/serho/tools/Sublime Text 2/Icon/48x48/sublime_text.png
Terminal=false
Type=Application
Categories=Application;Development;
StartupNotify=true
然后把这个文件拖到启动器上去就可以了。