`
bellstar
  • 浏览: 147955 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

让Mac版Sublime text3的Vintage插件切换命令模式时自动切换到英文输入法

阅读更多
问题:
sublime text3开启vintage插件(vim键模式)后,按Esc键切换到命令模式后,如果当前输入法是中文,需要再按快捷键切换到英文输入法,才能正常使用命令模式。所以很是麻烦。本文尝试解决这个麻烦。

之前写过针对sublime text2的文章http://bellstar.iteye.com/blog/1671006,本篇的内容应该也适用sublime text2,只是我没有试。这篇的方法比之前的那个更好,它不需要安装别的插件,改别人的插件。但是也需要手动写一个插件,当然,有空的话,能将下面的东西打包成一个独立插件发布最好。

解决:
我是这样做的:注册escape键,按下时执行run_multiple_commands,这条指令又会执行预定义的subprocess_in_cwd和exit_insert_mode两条指令,其中subprocess_in_cwd会调用外部的changeInputMethod这条指令。(subprocess_in_cwd和exit_insert_mode都是sublime text3自带的命令)。

整个过程是这样的,在插入模式时,按Escape键后,将自动将输入法切换到英文并退出插模式,即进入命令模式。

changeInputMethod是用objective-c实现的,run_multiple_commands是以sublime text3自定义插件的形式实现的,都已包含在附件中。

安装:
将RunMultipleCommands.py文件copy到sublime text3的packages/user/目录下,将下面键映射的内容加入Default (OSX).sublime-keymap。将changeInputMethod放到/usr/local/bin目录下(如果不在此目录下,需要相应的更改下方配置的参数)

[{
	"keys": ["escape"],
	"command": "run_multiple_commands",
	"context": [{
		"key": "setting.command_mode",
		"operand": false
	}, {
		"key": "setting.is_widget",
		"operand": false
	}],
	"args": {
		"commands": [
			{"command": "subprocess_in_cwd", "args": {"cmd": "/usr/local/bin/changeInputMethod U.S.", "wait": true}, "context": "window"},
			{"command": "exit_insert_mode"}
		]
	}
}]
分享到:
评论
1 楼 shlice 2015-12-09  
你好,我在osx上测试,输入法没有成功切换到英文。
你的"/usr/local/bin/changeInputMethod U.S."执行是成功的。
而且我注释掉{"command": "exit_insert_mode"}  内容,不能返回命令模式。配置应该是生效的。
想问下是哪里不对?谢谢。

相关推荐

Global site tag (gtag.js) - Google Analytics