上周忙呀忙~ 周一到五在忙项目,周六日搬家 在帝都平均一年就要换一次房子,从开始找房子到成功住进去前前后后大约花了半个多月的时间 什么时候就有自己的小窝了……
之前开发一直用的都是WebStorm,用了一段时间后发现很卡顿,内存占用很大,故而准备选择轻量级的Sublime。
以下是使用过程中的一些总结,持续更新~
1、安装Sublime Text3,傻瓜式安装,这里就不多说了~
2、安装Package Control(一个用来管理插件的插件)
ctrl + `打开控制台;将以下代码粘贴到控制台
import urllib.request,os,hashlib; h = 'df21e130d211cfc94d9b0905775a7c0f' + '1e3d39e33b79698005270310898eea76'; 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://packagecontrol.io/' + 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出现 选择即可安装sublime text 的各种插件
-----------------------------------------------------------------------------------------------------------------------------
出现问题:Package Control:There are no packages available for installation
解决方法:① 网上查资料说是IPV6的问题, 打开win+R cmd命令提示符中输入ping sublime.wbond.net 得到IP,在C:\Windows\system32\drivers\etc\hosts
文件,增加如下对应关系:{IPv4 address}sublime.wbond.Net
② 另一种说法是install package那个安装代码太旧,在官网上找到新的重新安装
③上述两种方法都没能解决我的问题,故在官网重新下载了安装文件(之前的是在网页上搜出的百度软件中心下载的汉化版),重新安装,成功!
-------------------------------------------------------------------------------------------------------------------------------
3、js校验插件
① 确保安装了nodeJs ;命令行进入npm目录,输入’npm install -g jshint’
② 插件安装输入JSHint Gutter
③ package settings > JSHint Gutter > Set Plugin Options > 设置NodeJS执行文件所在的路径(node_path),并将lint_on_save(文件保存时检查)选项打开
④ package settings > JSHint Gutter > set Linting Preferences 打开.jshintrc文件
定制自己的校验规则:
參考:’http://jshint.com/docs/options/’
// // 强制选项 // // When set to true, these options will make JSHint produce more warnings about your code. /** * 是否阻止位运算符的使用 * * 有时候为了快速取整或判断,会使用一些位运算符,所以此项设置为 false */ "bitwise": false, /** * 是否要求变量都使用驼峰命名 * * 默认开启 * 弃用,见jscs项目 */ "camelcase": false, /** * 是否要求 for/while/if 等循环和条件语句中总是使用花括号 * * */ "curly": false, /** * 是否强制使用严格等号 * * 有时候需要判断 null,所以默认不严格要求 */ "eqeqeq": false, /** * true: 默认要求所有函数运行在ES5 * 弃用 */ "es3": true, "es5": true, "esnext": true, /** * 选择ES版本,3,5,6 */ "esversion": 5, /** * for-in 语句是否要求过滤原型链上的对象 * * 默认打开 */ "forin": true, /** * 是否阻止修改或拓展基本对象(Array、Date 等)的原型链 * * 原型链污染比较危险,默认打开 */ "freeze": true, /** * 变量只能在函数域上定义,在代码块上定义的变量给出警告 */ "funcscope": true, /** * 当使用JS保留字时,显示警告 */ "futurehostile": true, /** *这个选项可以用来指定一个没有正式定义的全局变量的白名单。配置 globals在单个文件,看看内联配置. */ "globals": { "define": false, "module": true, "export": true, "console": false }, /** * 是否要求自执行的方法使用括号括起 (function () { } ()); * 默认打开 * 弃用,见jscs项目 */ "immed": true, /** * 指定tab缩进宽度为 2 个空格 * * 弃用,见jscs项目 */ "indent": 2, /** * 要求变量在使用前声明, */ "latedef": true, /** * 代码块嵌套深度 */ "maxdepth": 2, /** * 最大错误提示数量,默认50 */ "maxerr": 50, /** * 单行最大长度 * * 弃用,见jscs项目 */ "maxlen": 50, /** * 设置函数正式参数的最大数量 * */ "maxparams": 4, /** * 一个函数内声明语句的最大数量 * */ "maxstatements": 4, /** * 要求构造函数大写 * * 弃用,见jscs项目 */ "newcap": true, /** * 不允许使用 arguments.callee 和 arguments.caller */ "noarg": true, /** * 不允许使用逗号 */ "nocomma": true, /** * 不允许空的代码快,默认关闭 * * 弃用,见jscs项目 */ "noempty": false, /** * 不允许使用 "non-breaking whitespace"。 * * 这些字符在非 UTF8 页面会导致代码失效 */ "nonbsp": true, /** * 阻止直接使用 new 调用构造函数的语句(不赋值对象) * * // OK * var a = new Animal(); * * // Warn * new Animal(); */ "nonew": true, /** * 阻止直接使用 typeof 操作符 * * 慎用 */ "notypeof": true, /** * 字符串引号 * * 默认要求使用单引号 true-- 代码字符串禁止单引号双引号混用, "single"--只允许单引号 "double"--只允许双引号。 * 弃用,见jscs项目 */ "quotmark": "single", /** * 隐藏式声明 * "inner" - check for variables defined in the same scope only "outer" - check for variables defined in outer scopes as well false - same as inner true - allow variable shadowing */ "shadow": "inner", /** * 禁止在不必要的时候使用分组运算符 */ "singleGroups": true, /** * 是要求否以 strict 模式检查 * * 该选项要求文件有 "use strict;"不全局要求,需要的模块自行开启 */ "strict": false, /** * 提示未定义的变量 * * 未定义的变量会容易造成全局变量,该项开启 */ "undef": true, /** * 提示未使用的变量 * vars - to only check for variables, not function parameters * strict - to check all variables and parameters. * 默认开启 */ "unused": true, /** * 是否禁止使用var * Use `let` or `const` instead. */ "varstmt": true, // //Relaxing options // //When set to true, these options will make JSHint produce fewer warnings about your code. /** * 不显示缺少分号警告 */ "asi": true, /** * 不显示在 比较处使用了赋值 的警告信息。 */ "boss": true, /** * 不显示代码中使用的 debugger 语句默认给出的警告 */ "debug": true, /** * This option tells JSHint that your code uses ES3 array elision elements, or empty elements (for example, [1, , , 4, , , 7]). */ "elision": true, /** * 不显示关于 == null的警告 * 当您想要检查变量是否为空或未定义时,这种比较往往很有用。 */ "eqnull": true, /** * 不显示关于 eval 的警告 * */ "evil": true, /** * 不显示 在应该使用复制或函数调用的地方使用了表达式 的警告。 */ "expr": true, /** * 不显示缺少分号的警告 */ "lastsemic": true, /** * 不显示不安全的折行的警告 * * 弃用,见jscs项目 */ "laxbreak": true, /** * 不显示逗号放前面的警告,例如: * * 弃用,见jscs项目 */ "laxcomma": true, /** * 不显示 在循环语句中定义函数 的警告 */ "loopfunc": true, /** * 不显示 多行字符串 的警告 */ "multistr": true, /** * 不允许使用 ++ 和 -- 运算符 * * 默认关闭 */ "plusplus": false, /** * 禁止关于__proto__属性的警告 */ "proto": true, /** * true: Prohibit use of empty blocks * 该选项控制形如 person['name'] vs. person.name的警告信息的显示 * 弃用,见jscs项目 */ "sub": true, // // Environments // // These options let JSHint know about some pre-defined global variables. /** * 暴露浏览器属性的全局变量,列如 window,document; 注意:这个选项不暴露变量 alert或 console。 */ "browser": true, /** * 这个选项定义全局暴露的jQuery库。 */ "jquery": true
常见的提示错误:
“Missing semicolon.” : “缺少分号.”, “Use the function form of \”use strict\”.” : “使用标准化定义function.”, “Unexpected space after ‘-’.” : “在’-'后面不应出现空格.”, “Expected a JSON value.” : “请传入一个json的值.”, “Mixed spaces and tabs.”: “空格和TAB重复.”, “Unsafe character.” : “不安全的字符.”, “Line too long.”: “本行中的字符超过设定的最大长度.”, “Trailing whitespace.”: “本行末尾有过多无用空格.”, “Script URL.” : “脚本URL.”, “Unexpected {a} in ‘{b}’.” : “在 ‘{b}’ 中不该出现 {a}.”, “Unexpected ‘{a}’.” : “不该在此出现’{a}’.”, “Strings must use doublequote.” : “字符串需要用双引号”, “Unnecessary escapement.” : “不需要转义”, “Control character in string: {a}.” : “在字符串中出现了Control的字符”, “Avoid \\’.” : “避免 \\”, “Avoid \\v.” : “避免 \\v”, “Avoid \\x-.” : “避免 \\x-”, “Bad escapement.” : “错误的转义字符”, “Bad number ‘{a}’.” : “错误的数字 ‘{a}’”, “Missing space after ‘{a}’.” : “在’{a}’之后缺少空格”, “Don’t use extra leading zeros ‘{a}’.” : “不要再’{a}’的前面用多余的0″, “Avoid 0x-. ‘{a}’.” : “避免使用 0x-. ‘{a}’.”, “A trailing decimal point can be confused with a dot ‘{a}’.” : “在’{a}’中使用点尾随小数点”, “Unexpected comment.” : “不该在此处出现注释”, “Unescaped ‘{a}’.” : “没有转义 ‘{a}’”, “Unexpected control character in regular expression.” : “在正则表达式中出现了control字符”, “Unexpected escaped character ‘{a}’ in regular expression.” : “在正则表达式中出现了没有转义的字符 ‘{a}’”, “Expected ‘{a}’ and instead saw ‘{b}’.” : “应该用 ‘{a}’代替’{b}’”, “Spaces are hard to count. Use {{a}}.” : “空格难以统计,请使用 {{a}}”, “Insecure ‘{a}’.” : “不安全的 ‘{a}’”, “Empty class.” : “空的class”, “Expected a number and instead saw ‘{a}’.”:“应该用数字代替’{a}’”, “‘{a}’ should not be greater than ‘{b}’.”:“‘{a}’不应该比’{b}’大”, “‘hasOwnProperty’ is a really bad name.”: “‘hasOwnProperty’是关键字”, “‘{a}’ was used before it was defined.”:“‘{a}’未定义就已经使用了.”, “‘{a}’ is already defined.”:“‘{a}’被重复定义”, “A dot following a number can be confused with a decimal point.”:“数字后面的一个点会被误认为是十进制的小数点”, “Confusing minusses” : “容易混淆的负数表达-”, “Confusing plusses.” : “容易混淆的正数表达+”, “Unmatched ‘{a}’.” : “无法匹配的’{a}’”, “Expected ‘{a}’ to match ‘{b}’ from line {c} and instead saw ‘{d}’.”:“在行{c}中需要用’{a}’和’{b}’匹配,用来代替’{d}’”, “Unexpected early end of program.”:“程序不可预期的提前终止”, “A leading decimal point can be confused with a dot: ‘.{a}’.”:“‘{a}’前的点容易混淆成小数点”, “Use the array literal notation [].”:“使用数组的符号 []“, “Expected an operator and instead saw ‘{a}’.”:“需要用一个符号来代替’{a}’”, “Unexpected space after ‘{a}’.”:“在’{a}’之后不能出现空格”, “Unexpected space before ‘{a}’.”:“在’{a}’之前不能出现空格”, “Bad line breaking before ‘{a}’.”:“在’{a}’之前错误的换行”, “Expected ‘{a}’ to have an indentation at {b} instead at {c}.”:“‘{a}’需要在{c}而不是{b}处缩进”, “Line breaking error ‘{a}’.”:“换行错误 ‘{a}’”, “Unexpected use of ‘{a}’.”:“此处不能用’{a}’”, “Bad operand.”:“错误的操作数”, “Use the isNaN function to compare with NaN.”:“使用isNaN来与NaN比较”, “Confusing use of ‘{a}’.”:“容易混淆的’{a}’的使用”, “Read only.”:“只读的属性”, “‘{a}’ is a function.”:“‘{a}’是一个函数”, ‘Bad assignment.’:“错误的赋值”, “Do not assign to the exception parameter.”:“不要给额外的参数赋值”, “Expected an identifier in an assignment and instead saw a function invocation.”:“在赋值的语句中需要有一个标识符,而不是一个方法的调用”, “Expected an identifier and instead saw ‘{a}’ (a reserved word).”:“需要有一个标识符,而不是’{a}’(保留字符)”, “Missing name in function declaration.”:“在方法声明中缺少名称”, “Expected an identifier and instead saw ‘{a}’.”:“需要有一个标识符,而不是’{a}’”, “Inner functions should be listed at the top of the outer function.”:“内部函数的声明应该放在此函数的顶部。”, “Unreachable ‘{a}’ after ‘{b}’.”:“在’{b}’之后无法获取’{a}’”, “Unnecessary semicolon.”:“不必要的分号”, “Label ‘{a}’ on {b} statement.”:“将’{a}’放在{b}的声明中”, “Label ‘{a}’ looks like a javascript url.”:“‘{a}’看上去像一个js的链接”, “Expected an assignment or function call and instead saw an expression”:“需要一个赋值或者一个函数调用,而不是一个表达式.”, “Do not use ‘new’ for side effects.”:“不要用’new’语句.”, “Unnecessary \”use strict\”.”:“不必要的\”use strict\”.”, “Missing \”use strict\” statement.”:“缺少\”use strict\”的声明”, “Empty block.”:“空的模块”, “Unexpected /*member ‘{a}’.”:“不应出现 /*元素 ‘{a}’.”, “‘{a}’ is a statement label.”:“‘{a}’是一个声明”, “‘{a}’ used out of scope.”:“‘{a}’使用超出范围”, “‘{a}’ is not allowed.”:“不允许使用’{a}’”, “‘{a}’ is not defined.”:“‘{a}’没有被定义”, “Use ‘{a}’ to compare with ‘{b}’.”:“使用’{a}’与’{b}’相比”, “Variables should not be deleted.”:“变量需要被删除”, “Use the object literal notation {}.”:“使用对象的文字符号 {}”, “Do not use {a} as a constructor.”:“不要使用{a}作为一个构造对象”, “The Function constructor is eval.”:“The Function constructor is eval.”, “A constructor name should start with an uppercase letter.”:“一个构造对象的名称必须用大写字母开头.”, “Bad constructor.”:“错误的构造对象”, “Weird construction. Delete ‘new’.”:“构造对象有误,请删除’new’”, “Missing ‘()’ invoking a constructor.”:“缺少括号()”, “Avoid arguments.{a}.”:“避免参数.{a}.”, “document.write can be a form of eval.”:“document.write是eval的一种形式”, ‘eval is evil.’:“尽量不要使用eval”, “Math is not a function.”:“Math不是一个函数”, “Missing ‘new’ prefix when invoking a constructor.”:“此处缺少了’new’”, “Missing radix parameter.”:“缺少参数”, “Implied eval is evil. Pass a function instead of a string.”:“传递一个函数,而不是一个字符串”, “Bad invocation.”:“错误的调用”, “['{a}'] is better written in dot notation.”:“['{a}']最好用点.的方式”, “Extra comma.”:“多余的逗号”, “Don’t make functions within a loop.”:“不要用循环的方式创建函数”, “Unexpected parameter ‘{a}’ in get {b} function.”:“在{b}方法中不该用到参数’{a}’”, “Duplicate member ‘{a}’.”:“重复的’{a}’”, “Expected to see a statement and instead saw a block.”:“此处应该是语句声明.”, “Too many var statements.”:“过多var的声明”, “Redefinition of ‘{a}’.”:“‘{a}’被重复定义”, “It is not necessary to initialize ‘{a}’ to ‘undefined’.”:“无需将’{a}’初始化为’undefined’”, “Expected a conditional expression and instead saw an assignment.”:“此处需要一个表达式,而不是赋值语句”, “Expected a ‘break’ statement before ‘case’.”:“在’case’之前需要有’break’.”, “Expected a ‘break’ statement before ‘default’.”:“在’default’之前需要有’break’.”, “This ‘switch’ should be an ‘if’.”:“此处’switch’应该是’if’.”, “All ‘debugger’ statements should be removed.”:“请删除’debugger’的语句”, “‘{a}’ is not a statement label.”:“‘{a}’不是一个声明标签.”, “Expected an assignment or function call and instead saw an expression.”:“需要一个语句或者一个函数调用,而不是一个表达式”, “Function declarations should not be placed in blocks. Use a function expression or move the statement to the top of the outer function.”:“函数的声明不能放在类似if的块中,需要放在外部函数的顶部.” “Use '===' to compare with ...”:“这个错误是说,我们要是用全等来代替等于,如果表达式两边的数据类型是一致的话,建议使用全等来判断”
4、快捷键
------------ 基本编辑 ------------- ctrl + ` //打开控制台 ctrl + p //通过文件名搜索 ctrl + shift + p //调出命令板(Command Palette)
ctrl + ←/→ //进行逐词移动 ctrl + shift + ←/→ //进行逐词选择 ctrl + ↑/↓ //移动当前显示区域 Ctrl + Shift + ↑/↓ //移动当前行 ctrl + [ //向左缩进 ctrl + ] //向右缩进 ctrl + shift + V //可以以当前缩进粘贴代码
------------ 选择 ------------- ctrl + D //选择当前光标所在的词并高亮该词所有出现的位置,再次Ctrl + D选择该词出现的下一个位置,在多重选词的过程中,使用Ctrl + K进行跳过,使用Ctrl + U进行回退,使用Esc退出多重编辑。 ctrl + shift + L //将当前选中区域打散,然后进行同时编辑 ctrl + J //把当前选中区域合并为一行
ctrl + M //在起始括号和结尾括号之间切换 ctrl + shift + M //快速选择括号间的内容 ctrl + shift + J //快速选择同缩进的内容
ctrl + shift + J //快速选择当前作用域(Scope)的内容
------------ 查找&替换 ------------- F3 //跳至当前关键字下一个位置 shift + F3 //跳到当前关键字上一个位置 Alt + F3 //选中当前关键字出现的所有位置 ctrl + F/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 //进行上下左右分屏
Alt + shift + 1 //取消分屏
分屏之后,使用Ctrl + 数字键
跳转到指定屏,使用Ctrl + Shift + 数字键
将当前屏移动到指定屏
5、定制个性化主题
// 使光标闪动更加柔和 "caret_style": "phase", // 高亮当前行 "highlight_line": true, // 高亮有修改的标签 "highlight_modified_tabs": true, // 设置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,
6、常用功能
定位该文件在文件夹中的位置: 在代码区域右击 > Reveal in Side Bar
按Tab
自动补全
7、后续补充
全局搜索:ctrl + shift + F
来源:https://www.cnblogs.com/merryZhang/p/7091201.html