一、代码片段
开发人员很多时候是在做一些重复的工作。
针对不同数据表的增删改查都差不多,重复来重去的。很久不写程序了,利用十一假期在家看看书,写写程序。
最近一直很喜欢使用Sublime Text,发现它的代码片断管理功能不错,只要输入事先定义好的短语,大段的代码片段就可以自动填充进来。还可以定义变量。
如PHP代码。可以使用 ${0}的方式定义每一个参数,其它依次类推。如果想在代码片段中保留$符,只要在$前面加上\就可以了。如: \$data
设置步骤如下:
1,选择Tools -》 New Snippet
这样将会创建一个空的代码片段模板。如下:
</content><!-- Optional: Set a tabTrigger to define how to trigger the snippet --><!-- <tabTrigger>hello</tabTrigger> --><!-- Optional: Set a scope to limit where the snippet will trigger --><!-- <scope>source.python</scope> --></snippet>
在[ ]
中间放入你的代码,想替换哪儿个关键词就用${} 来改写,中间的数字为光标的顺序,按TAB键进行切换。
tabTrigger:为在编辑器中输入的关键词,然后按TAB键
scope:为在哪儿类源程序中起作用,当然可以不设置
description:为提示说明信息
写好后,保存。记住一定要保存为 .sublime-snippet 扩展名。如果打开一个已存在的,可以通过Preferences -》Browse Packages 在user目中就可以找到了。请注意,我使用的是MAC的本本,不知道windows系统下在什么位置,没在windows下用过这个软件。
下面是我写的一个小模板:
</content> <!-- Optional: Set a tabTrigger to define how to trigger the snippet --> <tabTrigger>tpdel</tabTrigger> <!-- Optional: Set a scope to limit where the snippet will trigger --> <!-- <scope>source.python</scope> --> <description>ThinkPHP - del() 删除一条数据方法</description></snippet>
用Sublime Text 3 很顺手,可是在写PHP程序时候调试并不方便,写PHP程序还是用PhpStorm好用,我用的是PhpStorm6 。经过了上面的情况,就想在PhpStorm下是不是也能这样做呢。经过研究发现这个开发工具也可以,真是很爽啊。 提示:在编辑器中 command + J 就可以有提示了。在windows下应该ctrl + J 。
使用方式是:
在Preferences里有一个 Live Templates 设置项,那儿里面有不少例子,可以试试啊。模板的编辑方式与上面Sublime Text差不多。只是这儿里不需要用\来转义。
如果想在模板中保留$符,只要输入$$就可以了。还支持设置参数的默认值及输出后自动格式化。
善用开发工具,开发效率会大大的提高。
ctrl+` or View > Show Console
sublime text 3
import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404e330c659d4bb41d3bdf022e94cab3cd0'; 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)
sublime text 2
1
|
import urllib2,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404e330c659d4bb41d3bdf022e94cab3cd0' ; pf = 'Package Control.sublime-package' ; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None ; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler()) ); by = urllib2.urlopen( 'http://sublime.wbond.net/' + pf.replace( ' ' , '%20' )).read(); dh = hashlib.sha256(by).hexdigest(); open ( os.path.join( ipp, pf), 'wb' ).write(by) if dh = = h else None ; print ( 'Error validating download (got %s instead of %s), please try manual install' % (dh, h) if dh ! = h else 'Please restart Sublime Text to finish installation' )
|
{
// 设置主题文件
“color_scheme”: “Packages/Color Scheme – Default/Monokai.tmTheme”,
// 设置字体和大小
“font_face”: “Consolas”,
“font_size”: 12,
// 字体选项:no_bold不显示粗体字,no_italic不显示斜体字,no_antialias和no_antialias关闭反锯齿
// subpixel_antialias和no_round是OS X系统独有的
“font_options”: [],
// 在文字上双击会全选当前的内容,如果里面出现以下字符,就会被截断
“word_separators”: “./\\()\”‘-:,.;<>~!@#$%^&*|+=[]{}`~?”,
// 是否显示行号
“line_numbers”: true,
// 是否显示行号边栏
“gutter”: true,
// 行号边栏和文字的间距
“margin”: 4,
// 是否显示代码折叠按钮
“fold_buttons”: true,
// 不管鼠标在不在行号边栏,代码折叠按钮一直显示
“fade_fold_buttons”: true,
//列显示垂直标尺,在中括号里填入数字,宽度按字符计算
“rulers”: [],
// 是否打开拼写检查
“spell_check”: false,
// Tab键制表符宽度
“tab_size”: 4,
// 设为true时,缩进和遇到Tab键时使用空格替代
“translate_tabs_to_spaces”: false,
// 否则作用于单个空格
“use_tab_stops”: true,
“detect_indentation”: true,
// 按回车时,自动与制表位对齐
“auto_indent”: true,
//针对C语言的
“smart_indent”: false,
// 需要启用auto_indent,第一次打开括号缩进时插入空格?(没测试出来效果…)
“indent_to_bracket”: true,
// 显示对齐的白线是否根据回车、tab等操作自动填补
“trim_automatic_white_space”: true,
// 是否自动换行,如果选auto,需要加双引号
“word_wrap”: false,
// 设置窗口内文字区域的宽度
“wrap_width”: 0,
// 防止被缩进到同一级的字换行
“indent_subsequent_lines”: true,
// 如果没有定义过,则文件居中显示(比如新建的文件)
“draw_centered”: false,
// 自动匹配引号,括号等
“auto_match_enabled”: true,
// 拼写检查的单词列表路径
“dictionary”: “Packages/Language – English/en_US.dic”,
// 代码地图的可视区域部分是否加上边框,边框的颜色可在配色方案上加入minimapBorder键
“draw_minimap_border”: false,
// 突出显示当前光标所在的行
“highlight_line”: false,
// 设置光标闪动方式
“caret_style”: “smooth”,
// 是否特殊显示当前光标所在的括号、代码头尾闭合标记
“match_brackets”: true,
// 设为false时,只有光标在括号或头尾闭合标记的两端时,match_brackets才生效
“match_brackets_content”: true,
// 是否突出显示圆括号,match_brackets为true生效
“match_brackets_square”: false,
// 是否突出显示大括号,match_brackets为true生效
“match_brackets_braces”: false,
// 是否突出显示尖括号,match_brackets为true生效
“match_brackets_angle”: false,
// html和xml下突出显示光标所在标签的两端,影响HTML、XML、CSS等
“match_tags”: true,
// 全文突出显示和当前选中字符相同的字符
“match_selection”: true,
// 设置每一行到顶部,以像素为单位的间距,效果相当于行距
“line_padding_top”: 1,
// 设置每一行到底部,以像素为单位的间距,效果相当于行距
“line_padding_bottom”: 1,
// 设置为false时,滚动到文本的最下方时,没有缓冲区
“scroll_past_end”: true,
// 控制向上或向下到第一行或最后一行时发生什么
“move_to_limit_on_up_down”: false,
// 按space或tab时,实际会产生白色的点(一个空格一个点)或白色的横线(tab_size设置的制表符的宽度),选中状态下才能看到
// 设置为none时,什么情况下都不显示这些点和线
// 设置为selection时,只显示选中状态下的点和线
// 设置为all时,则一直显示
“draw_white_space”: “selection”,
// 制表位的对齐白线是否显示,颜色可在主题文件里设置(guide,activeGuide,stackGuide)
“draw_indent_guides”: true,
// 制表位的对齐白线,draw_normal为一直显示,draw_active为只显示当前光标所在的代码控制域
“indent_guide_options”: ["draw_normal"],
// 为true时,保存文件时会删除每行结束后多余的空格
“trim_trailing_white_space_on_save”: false,
// 为true时,保存文件时光标会在文件的最后向下换一行
“ensure_newline_at_eof_on_save”: false,
// 切换到其它文件标签或点击其它非本软件区域,文件自动保存
“save_on_focus_lost”: false,
// 编码时不能自动检测编码时,将自动检测ASCII, UTF-8 和 UTF-16
“fallback_encoding”: “Western (Windows 1252)”,
// 默认编码格式
“default_encoding”: “UTF-8″,
// 包含空字节的文件被打开默认为十六进制
“enable_hexadecimal_encoding”: true,
// 每一行结束的时候用什么字符做终止符
“default_line_ending”: “system”,
// 设置为enabled时,在一个字符串间按Tab将插入一个制表符
// 设置为true时,按Tab会根据前后环境进行代码自动匹配填补
“tab_completion”: true,
// 代码提示
“auto_complete”: true,
// 代码提示的大小限制
“auto_complete_size_limit”: 4194304,
// 代码提示延迟显示
“auto_complete_delay”: 50,
// 代码提示的控制范围
“auto_complete_selector”: “source – comment”,
// 触发代码提示的其他情况
“auto_complete_triggers”: [ {"selector": "text.html", "characters": "<"} ],
// 设为false时,选择提示的代码按回车或点击可以输出出来,但选择true时不会输出而是直接换行
“auto_complete_commit_on_tab”: false,
// 设置为false,使用Shift + tab总是插入制表符
“shift_tab_unindent”: true,
// 选中的文本按Ctrl + f时,自动复制到查找面板的文本框里
“find_selected_text”: true,
// Data\Packages\Theme – Default\Default.sublime-theme控制软件的主题
“theme”: “Default.sublime-theme”,
// 滚动的速度
“scroll_speed”: 1.0,
// 左边边栏文件夹动画
“tree_animation_enabled”: true,
// 标签页的关闭按钮
“show_tab_close_buttons”: true,
// 针对OS X
“use_simple_full_screen”: false,
// 水平垂直滚动条:system和disabled为默认显示方式,enabled为自动隐藏显示
“overlay_scroll_bars”: “system”,
// 热推出功能!退出时不会提示是否保存文件,而是直接退出
// 下次打开软件时,文件保持退出前的状态,没来得及保存的内容都在,但并没有真实的写在原文件里
“hot_exit”: true,
// 软件使用最后的设定打开文件,hot_exit为true时没有效果
“remember_open_files”: true,
// 针对OS X
“open_files_in_new_window”: true,
// 针对OS X
“close_windows_when_empty”: true,
// 哪些文件会被显示到边栏上
“folder_exclude_patterns”: [".svn", ".git", ".hg", "CVS"],
“file_exclude_patterns”: ["*.pyc", "*.pyo", "*.exe", "*.dll", "*.obj","*.o", "*.a", "*.lib", "*.so", "*.dylib", "*.ncb", "*.sdf", "*.suo", "*.pdb", "*.idb", ".DS_Store", "*.class", "*.psd", "*.db"],
// Goto Anything or Find in Files
“binary_file_patterns”: ["*.jpg", "*.jpeg", "*.png", "*.gif", "*.ttf", "*.tga", "*.dds", "*.ico", "*.eot", "*.pdf", "*.swf", "*.jar", "*.zip"],
// 删除你想要忽略的插件,需要重启, 去掉Vinage开启vim模式
“ignored_packages”: ["Vintage"]
}
我的配置:
{
“default_encoding”: “UTF-8″,
"auto_complete_commit_on_tab": false,
"auto_complete_delay": 0,
"auto_complete_with_fields": true,
"auto_indent": true,
"auto_match_enabled": true,
"bold_folder_labels": true,
"caret_style": "wide",
"color_scheme": "Packages/Color Scheme - Default/Monokai Bright.tmTheme",
"fade_fold_buttons": false,
"fold_buttons": true,
"font_face": "Consolas",
"font_options":[],
"font_size": 13,
"highlight_line": true,
"hot_exit": false,
"ignored_packages":[],
"match_brackets_angle": true,
"match_brackets_content": true,
"match_tags": true,
"remember_open_files": false,
"smart_indent": true,
"tab_size": 4,
"word_wrap": "false"
}
快捷键:
[
{ "keys": ["ctrl+["], "command": "exit_insert_mode"},
{ "keys": ["ctrl+h"], "command": "left_delete"},
{ "keys": ["alt+h"], "command": "move", "args": {"by": "characters", "forward": false} },
{ "keys": ["alt+l"], "command": "move", "args": {"by": "characters", "forward": true} },
{ "keys": ["alt+k"], "command": "move", "args": {"by": "lines", "forward": false} },
{ "keys": ["alt+j"], "command": "move", "args": {"by": "lines", "forward": true} },
{ "keys": ["ctrl+j"], "command": "insert", "args": {"characters": "\n"} },
{ "keys": ["ctrl+i"], "command": "auto_complete" },
{ "keys": ["ctrl+i"], "command": "replace_completion_with_auto_complete", "context":
[
{ "key": "last_command", "operator": "equal", "operand": "insert_best_completion" },
{ "key": "auto_complete_visible", "operator": "equal", "operand": false },
{ "key": "setting.tab_completion", "operator": "equal", "operand": true }
]
}
{ "keys": ["ctrl+d"], "command": "right_delete" },
{ "keys": ["alt+s"], "command": "save" },
]
Ctrl+G 跳转到相应的行
Ctrl+J 合并行(已选择需要合并的多行时)
Ctrl+L 选择整行(按住-继续选择下行)
Ctrl+M 光标移动至括号内开始或结束的位置
Ctrl+T 词互换
Ctrl+U 软撤销
Ctrl+P 查找当前项目中的文件和快速搜索;输入 @ 查找文件主标题/函数;或者输入 : 跳转到文件某行;
Ctrl+R 快速列出/跳转到某个函数
Ctrl+K Backspace 从光标处删除至行首
Ctrl+K+B 开启/关闭侧边栏
Ctrl+KK 从光标处删除至行尾
Ctrl+K+T 折叠属性
Ctrl+K+U 改为大写
Ctrl+K+L 改为小写
Ctrl+K+0 展开所有
Ctrl+Enter 插入行后(快速换行)
Ctrl+Tab 当前窗口中的标签页切换
Ctrl+Shift+A 选择光标位置父标签对儿
Ctrl+Shift+D 复制光标所在整行,插入在该行之前
ctrl+shift+F 在文件夹内查找,与普通编辑器不同的地方是sublime允许添加多个文件夹进行查找
Ctrl+Shift+K 删除整行
Ctrl+Shift+L 鼠标选中多行(按下快捷键),即可同时编辑这些行
Ctrl+Shift+M 选择括号内的内容(按住-继续选择父括号)
Ctrl+Shift+P 打开命令面板
Ctrl+Shift+/ 注释已选择内容
Ctrl+Shift+↑可以移动此行代码,与上行互换
Ctrl+Shift+↓可以移动此行代码,与下行互换
Ctrl+Shift+[ 折叠代码
Ctrl+Shift+] 展开代码
Ctrl+Shift+Enter 光标前插入行
Ctrl+PageDown 、Ctrl+PageUp 文件按开启的前后顺序切换
Ctrl+Z 撤销
Ctrl+Y 恢复撤销
Ctrl+F2 设置/取消书签
Ctrl+/ 注释整行(如已选择内容,同“Ctrl+Shift+/”效果)
Ctrl+鼠标左键 可以同时选择要编辑的多处文本
Shift+鼠标右键(或使用鼠标中键)可以用鼠标进行竖向多行选择
Shift+F2 上一个书签
Shift+Tab 去除缩进
Alt+Shift+1(非小键盘)窗口分屏,恢复默认1屏
Alt+Shift+2 左右分屏-2列
Alt+Shift+3 左右分屏-3列
Alt+Shift+4 左右分屏-4列
Alt+Shift+5 等分4屏
Alt+Shift+8 垂直分屏-2屏
Alt+Shift+9 垂直分屏-3屏
Ctrl+Shift+分屏序号 将当前焦点页分配到分屏序号页
Alt+. 闭合当前标签
Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑
Tab 缩进 自动完成
F2 下一个书签
F6 检测语法错误
F9 行排序(按a-z)
F11 全屏模式