让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"}
		]
	}
}]
  • input_method_autoswitcher.zip (5.9 KB)
  • 下载次数: 19

你可能感兴趣的:(osx,sublimetext3,sublimetext2,vim)