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"} ] } }]