完善 Sublime Text 工做流

给任意的操做设置快捷键

sublime 对单词转换有三个操做:upper_case,lower_casetitle_case, 可是奇怪的是前两个都有快捷键,可是第三个却没有,这一点不能忍。可是默认配置里甚至都没有设置它,要怎么改?python

找到 sublime 操做的名字

要给 title_case 设置快捷键的第一个问题就是,咱们得知道这个操做的名字叫什么,这样才能修改用户设置的快捷键。sublime-text

打开 console, 让它打印出每个操做的命令:数组

sublime.log_commands(True)

如今去Edit菜单下面选择title case, 而后 console 里面就会把这个操做打印出来:app

title_case

知道了名字,那设置起来就好办了:函数

// User/Default(OSX).sublime-keymap
[
  // ...
  { "keys": ["super+k", "super+t"], "command": "title_case" },
]
给建立快捷键自己设置快捷键

既然学会了,那干脆把调出User/Default(OSX).sublime-keymap这个设置的操做也设置一个快捷键好了。点preference/key binding -user, 而后 console 里就会显示这个操做:this

command: open_file {"file": "${packages}/User/Default ($platform).sublime-keymap"}

那就是说这个操做的名字叫作open_file, 参数是后面这些,那去设置一下:插件

{
  "keys": ["super+k", "super+s"], 
  "command": "open_file", "args": { "file":  "${packages}/User/Default ($platform).sublime-keymap"} 
},

如今要改快捷键就能够用快捷键super+k,super+s了。code

而后就能够轻松地哪里想改改哪里了。orm

添加 close_other 快捷键

关闭当前标签用 cmd + w 就好了,因此每一个 tab 的关闭键对我都可有可无了,由于我历来不会用鼠标去点。可是我发现"关闭其余标签"这个动做却没有快捷键。这个动做在默认的快捷键设置里面也没有。因此第一步就是找到这个动做的名字是什么。前面提到了,在 console 敲入:token

sublime.log_commands(True)

而后点右键点击"close other tabs", 而后就会在 console 里面看到原来这个动做的名字叫作"close-others-by-index"。可是不幸的是这个操做不能直接设置快捷键,为何呢?由于这个操做须要当前的 group 和 index 做参数。group 指的是所在的屏(若是没有分屏的话,当前的 group 就是0),index 指的是当前标签在当前屏的第几位。

咱们首先须要写一个插件: Tools/developers/new plugins

// closeOthers.py
import sublime, sublime_plugin

class closeOthersCommand(sublime_plugin.TextCommand):
  def run(self, edit):
    window = self.view.window()
    group_index, view_index = window.get_view_index(self.view)
    window.run_command("close_others_by_index", { "group": group_index, "index": view_index})

这段 python 代码就是获取了 group 和 index 的值,而后把这俩值做参数传给close_others_by_index这个操做。

保存好以后,再去自定义快捷键:

{ "keys": ["ctrl+w"], "command": "close_others" }

注意这里的 command 必须是close_others, 由于咱们保存的 python 文件的名字叫作closeOthers.py。这样的话,"ctrl+w"按下就至关于调用了closeOthers.py, 传入当前的 group 和 index 值, 实施了 close_others_by_index 的操做。

参考:

分屏

说到分屏,可能大多数天天都在用。可是我有个很不爽的地方,在用 MacBook Air 的时候,屏幕过小了,老是要在左右屏之间拉来拉去。这时候若是除了对半分以外,还有1/9分和9/1分那就行了,这样的话就能够专心看左边/右边的内容了:

{
  "keys": ["super+alt+["],
  "command": "set_layout",
  "args":
  {
    "cols": [0.0, 0.11, 1.0],
    "rows": [0.0, 1.0],
    "cells": [[0, 0, 1, 1], [1, 0, 2, 1]]
  }
},
{
  "keys": ["super+alt+]"],
  "command": "set_layout",
  "args":
  {
    "cols": [0.0, 0.88, 1.0],
    "rows": [0.0, 1.0],
    "cells": [[0, 0, 1, 1], [1, 0, 2, 1]]
  }
}

我看了一下,这两个快捷键原本是用来折叠函数等代码块的,这个我用不着,要折叠直接点那个 caret 可能方便点,直接就覆盖了。

多光标

  • cmd+d 这个快捷键能够用来逐个选择相同单词,在须要重命名数量很少的变量的时候能够用它,特别灵活。

  • cmd+ctrl+g 用来对相同单词作全选,正由于是全选,可能也不够灵活,视状况而定。

  • cmd+shift+l 多行分裂,鼠标选择多行,而后在每行的最后加上了光标。可能能够在每行最后添加多行注释?

  • option+mouse 拉取选择竖行。

一个练习,把下面的 the 改为首字母大写。
The name
The name
The name
The name
The name

一、cmd+d 不用说,逐个选择
二、cmd+ctrl+g 的话,要注意若是页面里面还有其余的 the 单词,可能会误伤。
三、cmd+shift+l 先获取每行行尾的光标,而后 cmd+<-,修改 t
四、option+mouse 直接往下拉一列
五、在选中 the 单词以后,也能够用 convert case。

command palette 和 goto Anything

在设置文件语法,跳转到其余文件跳转到函数、CSS 选择器(cmd+r)的时候,能够选择 cmd+p 或者 cmd+shift+p。

snippet

平时在写 if/else、fun 代码块的时候其实就会有代码提示的。除此以外,还能够自定义代码块。
举个例子,设置一个 iife 的代码片断,tools->new snippets,跳出这个:

<snippet>
  <content><![CDATA[
Hello, ${1:this} is a ${2: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>

把下面的 tabTrigger 取消注释,hello->iife,而后把 content 的内容改一下,变成这样:

<snippet>
  <content><![CDATA[
(function () {
  $1
})
]]></content>
  <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
  <tabTrigger>iife</tabTrigger>
  <!-- Optional: Set a scope to limit where the snippet will trigger -->
  <scope>source.js</scope>
</snippet>

中间那个$1的意思就是光标会在那儿,而后下面的<scope>source.js</scope>就是只会在js 文件里面生效。

AdvancedNewFile

这是个插件,用来快速添加文件,在此以前我一直都是在 zsh 里面 touch 来添加文件的,由于在 sublime 里面太慢了,直到有了这个插件。

安装好这个插件以后,cmd+option+n, 而后下方会有个框来输入文件的名字,也能够加路径,若是输入的路径是原来没有的话,那么就会新建。

等号附近的对齐

// turn 
let app = item1
let getcha = item2
let aswgwygwubd = item3

// int o
let app         = item1
let getcha      = item2
let aswgwygwubd = item3

选中,ctrl+option+]

gist

gist 是一个保存和分析 snippet 的地方,若是有什么经常使用的代码段,能够保存在那边。与其开个页面到 gist 那边复制粘贴,不如选择直接在 sublime 里面获取和保存代码段。

在 gist 的设置里面把 token 填进去就至关于和 gist 创建了联系,以后要建立、抓取gist的话,能够用 cmd+shift+p 来搜索,在里面选择 create public gist等等。

docblockr

这是个插件,用来快速生成注释块,用在函数、类、变量以前的时候还会有一些智能提示。好比说:

function introYou (name, age) {
  return name + age
}
// add /** below that function and 获得这个结果,光标在第一个 type上。

/**
 * @param  {[type]}
 * @param  {[type]}
 * @return {[type]}
 */
function introYou(name, age) {
  return name + age
}

join lines

cmd+j 能够把多行连成一行。比方说,

var arr = [
  one,
  tow,
  three,
  four
]

光标放在左括号,按几下 cmd+j, 数组就变成单行显示了。

more...

参考:Sublime Text Perfect Workflow

相关文章
相关标签/搜索