开启vi mode后,可以使用很多的VI快捷方式,所以我的sublime已经不是单纯的st了,st的VI模式不完全支持所有的快捷键。我们来看一段官网的key bindings示例:

{ 
"keys": ["j", "j"], "command": "exit_insert_mode",
"context":
[
{ "key": "setting.command_mode", "operand": false },
{ "key": "setting.is_widget", "operand": false }
]
}

这里使用jj来退出VI的insert模式,比Escape好,手指不用伸老长了。而且我感觉jj也很人性化,用上一段时间也感觉可以。于是,我在想了,这个东西怎么自己设置。要设置key bindings,需要知道它有一些规定的参数。满足复杂的需求,但是我今天只是写个简单的。

一个key bindings的结构

  1. “keys”: An array with a key combination that this mapping will respond to. In this case, the “escape” key.
  2. “command”: A method that sublime uses internally to accomplish the task.
  3. “context”: A configuration object that tells sublime to only respond to this key combination under specific circumstances. In this case,setting.command_mode needs to be false. Meaning you’re in insert mode. This makes sense, you can’t exit insert mode, if you’re not in it.

首先,我们要知道command从哪里来,keys这个简单,一看就知道它就是快捷键。当我们ctrl+`就可以调出控制台。输入:

sublime.log_commands(True)

这时,你所有的操作都会显示出来。

比如我现在想加入一个让它在Command模式下跳到行首的快捷键,如果是vi的话,我们是可以用ctrl+^。这样的话,手指又要做奇怪的1+1。当我们用了key bindings,我们的手指就不用离开原来的位置了。

这时,我们按下HOME键,下面就显示:command: set_motion {"motion": "vi_move_to_first_non_white_space_character", "motion_args": {"extend": true}}

不要傻眼了,照搬回去就行了。

{ 
"keys":["g","h"], "command": "set_motion",
"args": {"motion": "vi_move_to_first_non_white_space_character", "motion_args": {"extend": true}}
}

这样就完成一个了,如果有什么错误欢迎指出,这也是我第一个写的Key binding。

*不要忘记了 sublime.log_commands(False)

Sublime key bindings使用的更多相关文章

  1. Emacs key bindings for vim users

    Emacs key bindings for vim users | Scarletsky 盒子 盒子 博客 分类 标签 关于 RSS 搜索 文章目录 简介 Emacs 是一个文本编辑器,号称是伪装成 ...

  2. Sublime key

    -– BEGIN LICENSE -– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA ...

  3. 我的ubuntu配置

    每次装系统都是非常蛋疼的过程,新装的系统还是要配置一下的 首先安装google拼音 sudo apt-get install fcitx fcitx-googlepinyin 然后按装numix主题 ...

  4. sublime text : The emmet plugin doesn't work when tab key was pressed

    Today, I switched my sublime text to version 3. And then I found that  the emmet plugin doesn't work ...

  5. 【Machine Learning】Python开发工具:Anaconda+Sublime

    Python开发工具:Anaconda+Sublime 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现 ...

  6. 如何优雅地使用Sublime Text

    Sublime Text:一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.相比于难于上手的Vim,浮肿沉重的Eclip ...

  7. sublime 相关配置

    安转插件:案例格式化HTML代码,需要安装插件,具体安装步骤如下: 1.打开菜单->首选项->插件控制,输入 install package 2.等待程序进入插件管理功能,再输入插件名称: ...

  8. 如何在sublime text上快速访问html页面?

    第一步.安装package control和安装sidebarenhancements插件 原来Subl3安装Package Control很麻烦,现在简单的方法来了 使用Ctrl+`快捷键或者通过V ...

  9. sublime

    sublime的格式化快捷键 其实在sublime中已经自建了格式化按钮:Edit  ->  Line  ->  Reindent 只是sublime并没有给他赋予快捷键,所以只需加上快捷 ...

随机推荐

  1. Varnish缓存服务器的搭建配置手册

    Varnish缓存服务器的搭建配置手册 1.Varnish官方环境依赖提示 Installing Varnish Cache is as simple as enabling our package ...

  2. sql语句中charindex的用法 可用于截取字符串

    使用CHARINDEX和PATINDEX函数来搜索文字列和字符串.这两个函数是如何运转的,解释他们的区别.同时提供一些例子,通过这些例子,你可以可以考虑使用这两个函数来解决很多不同的字符搜索的问题. ...

  3. 苹果在Xcode6中弃用segue的push和model

    苹果在Xcode6中弃用了segue的push和model.被show和present取代. 下面是新版本中每种类型的使用总结和例子.建议自己使用前先在测试项目中自己试一试 Show 根据当前屏幕中的 ...

  4. c# list排序

    List<int> tmp = new List<int>(){5,1,22,11,4}; 升序:tmp.Sort((x, y) => x.CompareTo(y)); ...

  5. (转)TeamCity配置笔记

    1.编译sln 2.发布网站 3.重复代码检测 4.代码分析 5.单元测试&覆盖率测试 查看代码覆盖率 7.代码签入时自动触发编译 8.通知 1.在teamcity安装目录中找到TrayNot ...

  6. arcgis js api 本地化配置

    配置arcgis library 根目录的init.js的 "baseUrl:",使其指向正确的地址

  7. 前端工程搭建NodeJs+gulp+bower

    需要node.npm的事先安装!! 1.nodejs安装程序会在环境变量中添加两个变量: 系统环境变量中:path 增加C:\Program Files\nodejs\ 因为在该目下存在node.ex ...

  8. jQuery 遍历用法

    jQuery 遍历 DOM 树 parent() 方法返回被选元素的直接父元素(找爸爸). parents() 方法返回被选元素的所有祖先元素,它一路向上直到文档的根元素 (找长辈). parents ...

  9. Mongodb 级联删除查询操作

    ObjRelationPojo表一条记录 public class YpObjRelationPojo implements Serializable { @Id private String id; ...

  10. 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)

    AsyncTask使用方法详情:http://www.cnblogs.com/zzw1994/p/4959949.html 下拉开源框架PullToRefresh使用方法和下载详情:http://ww ...