安装插件
可以把插件下载后,放进目录 ~/.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
然后把这个文件拖到启动器上去就可以了。