在 Visual Studio 等编辑器/IDE中自动切换输入法,不需要手动的有没有?
使用Visual Studio写代码,经常遇到的一个问题就是切换中文输入法麻烦,输入完注释//,要切换到中文,输入完引号,要输入中文,然后还需要切换回来,有没有?
有时候中文输入法忽然失效有没有?明明在中文输入法状态下,输入不了中文,有没有?
这里分享一个AHK脚本,解决了以上问题,实现了如下功能:
1.根据不同的程序,启动后,自动切换到中文,英文输入法。
比如 qq 使用搜狗拼音,vs启动后自动切换到英文输入法。
2.在 Visual Studio 等IDE/编辑器中(可配置),自动切换输入法。
- 方便加入注释:输入注释//加空格,自动切换到中文输入法。无视当前输入法状态,如果为中文,“、、”自动更正为//
- 方便输入中文字符串:输入引号加空格,自动切换到中文输入法。
- 方便切换回英文输入法:输入分号,换行时,自动切换到英文输入法。同样无视当前输入法状态,自动将全角分号更正为半角分号;输入分号加空格,自动切换回英文输入法,自动将全角分号修正为半角分号
3.在 Visual Studio 等IDE/编辑器中(可配置),更高效的手动切换输入法
手动切换时,操作简单,便于记忆,空格代表中文输入法(智能abc用户表示输入的字符都是空格上屏),分号代表英文输入法,这个 c# 码农都懂的。
- 连续输入两个分号,切换到英文输入法
- 连续输入两个空格,切换到中文输入法
连击两次键切换,比按下windows,contrl 等组合键好多了。别跟我说 shirt 键切换,容易搞混当前输入法状态。
代码测试通过环境:win10 64 位,vs2012/vs2013/vs2015/Notepad++/Notepad,ahkv1.1.23.01
亮点截图:

打开qq聊天窗口时,自动切换到了中文输入法状态:

AHK 代码如下:
;=====分组配置
;中文输入法的分组
GroupAdd,cn,ahk_exe QQ.exe ;QQ
GroupAdd,cn,ahk_exe WINWORD.EXE ;word
GroupAdd,cn,ahk_exe MindManager.exe ;英文输入法的分组
GroupAdd,en,ahk_exe devenv.exe ;Visual Studio
GroupAdd,en,ahk_exe dopus.exe
GroupAdd,en,ahk_class Notepad++ ;编辑器分组
GroupAdd,editor,ahk_exe devenv.exe ;Visual Studio
GroupAdd,editor,ahk_exe notepad.exe ;记事本
GroupAdd,editor,ahk_class Notepad++ ;函数
;从剪贴板输入到界面
sendbyclip(var_string)
{
ClipboardOld = %ClipboardAll%
Clipboard =%var_string%
ClipWait
send ^v
sleep
Clipboard = %ClipboardOld% ; Restore previous contents of clipboard.
} setChineseLayout(){
;发送中文输入法切换快捷键,请根据实际情况设置。
send {Ctrl Down}{Shift}
send {Ctrl Down},
send {Ctrl Down}{Shift}
send {Ctrl Down},
send {Ctrl Up}
}
setEnglishLayout(){
;发送英文输入法切换快捷键,请根据实际情况设置。
send {Ctrl Down}{Shift}
send {Ctrl Down},
send {Ctrl Down}{Shift}
send {Ctrl Down}, send {Ctrl Down}{Space}
send {Ctrl Up}
} ;监控消息回调ShellMessage,并自动设置输入法
Gui +LastFound
hWnd := WinExist()
DllCall( "RegisterShellHookWindow", UInt,hWnd )
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage") ShellMessage( wParam,lParam ) {
If ( wParam = )
{
WinGetclass, WinClass, ahk_id %lParam%
;MsgBox,%Winclass%
Sleep,
WinActivate,ahk_class %Winclass%
;WinGetActiveTitle, Title
;MsgBox, The active window is "%Title%".
IfWinActive,ahk_group cn
{
setChineseLayout()
TrayTip,AHK, 已自动切换到中文输入法
return
}
IfWinActive,ahk_group en
{
setEnglishLayout()
TrayTip,AHK, 已自动切换到英文输入法
return
}
}
} ;在所有编辑器中自动切换中英文输入法
#IfWinActive,ahk_group editor
:*:// ::
;//加空格 时 切换到中文输入法
setEnglishLayout()
sendbyclip("//")
setChineseLayout()
return
:Z*:///::
;///注释时 切换到中文输入法(也可以输入///加空格)
setEnglishLayout()
sendbyclip("//")
SendInput /
setChineseLayout()
return
:*:" ::
;引号加空格 时 切换到中文输入法
setEnglishLayout()
SendInput "
setChineseLayout()
return
:*:`;`n::
;分号加回车 时 切换的英文输入法
setEnglishLayout()
sendbyclip(";")
SendInput `n
return
:Z?*:`;`;::
;两个分号时 切换的英文输入法
setEnglishLayout()
return
:Z?*: ::
;输入两个空格 切换的中文输入法
setEnglishLayout()
setChineseLayout()
return #IfWinActive
已经编译后的exe文件
已设置Visual Studio,Notepad++,记事本为编辑器,支持开发自动切换:
已设置qq,word,MindManager自动切换为中文输入法。
已经设置Visual Studio,Notepad++,Directory Opus自动切换为因为输入法。
下载(博客园上传不了附件),请前往:
如果需要自己配置,请修改ahk源代码
Github地址:
https://github.com/lspcieee/lspcieee_ahk
在 Visual Studio 等编辑器/IDE中自动切换输入法,不需要手动的有没有?的更多相关文章
- 【转】【UML】使用Visual Studio 2010 Team System中的架构师工具(设计与建模)
Lab 1: 应用程序建模 实验目标 这个实验的目的是展示如何在Visual Studio 2010旗舰版中进行应用程序建模.团队中的架构师会通过建模确定应用程序是否满足客户的需求. 你可以创建不同级 ...
- Visual Studio下Qt编程中对中文的处理
Visual Studio下Qt编程中对中文的处理 本文为原创文章,原文地址http://www.cnblogs.com/c4isr/p/qt_develop_in_vs.html Visual St ...
- 在visual studio的工程项目应用中打开console控制窗口
在visual studio的工程项目应用中打开console控制窗口,这个可以方便我们在console中输出参数的值检查错误. 只需要在需要打开console的地方加入下面的代码即可. AllocC ...
- Visual Studio 2010 VS IDE 编辑界面出现绿色的点 去掉绿色的空格点
Visual Studio 2010 VS IDE 编辑界面出现绿色的点 去掉绿色的空格点 Vs乱按一顿忽然出现一堆绿色的点,我去好难看,还不知道什么鬼,查了查其实就是个 每个点表示一个空格 让他显 ...
- 用DebuggerDisplay在Visual Studio的调试器中定制类的显示方式
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:用DebuggerDisplay在Visual Studio的调试器中定制类的显示方式.
- 使用 AHK 在 VS Code 中根据上下文自动切换输入法状态
平常在VS Code打公式,中英文切换一直狂点 Shift 手都快按断了,于是试图用 AutoHotKey 搞一些自动切换输入法程序,让它根据当前输入环境自动切输入法. 之前在网上搜到的是切换键盘的( ...
- VS Code - Vim 插件自动切换输入法
前言: 在使用 Linux 的过程中,vim 是一个不错的编辑器,以至于多数人将其用成了习惯,在没有 vim 的环境下还是习惯用 vim 的快捷键来编辑文本.所以便有开发者们为众多的 IDE 和文本编 ...
- 原生 JS 实现 VS Code 自动切换输入法状态!这次没有AHK
上一篇文章:使用 AHK 在 VS Code 中根据上下文自动切换输入法状态 给出一个使用 ahk 在 VSCode 自动切换输入法的方法.不过这个方法实际上很蹩脚,一点都不优(zhuang)雅(bi ...
- visual studio code 编辑器的配置及快捷键等, vscode, csc
visual studio code (vsc) 对开发node.js,javascript,python,html,golang等比较友好,同时支持git浏览及分屏对比,运行速度快,所以是值得一用的 ...
随机推荐
- js array queue (队列)
前言 今天项目中做一个图片效果展示,需要实时从后台获取图片数据,前段做展示.想想用到队列,比较好实现这个功能,只需要展示队列里的数据就可以了.于是写了个js 对列. js code /** * [Qu ...
- Linux线程体传递参数的方法详解
传递参数的两种方法 线程函数只有一个参数的情况:直接定义一个变量通过应用传给线程函数. 例子 #include #include using namespace std; pthread_t thre ...
- Distributed4:SQL Server 分布式数据库性能测试
我使用三台SQL Server 2012 搭建分布式数据库,将一年的1.4亿条数据大致均匀存储在这三台Server中,每台Server 存储4个月的数据,Physical Server的配置基本相同, ...
- UITableView 一直显示滚动条(ScrollBar Indicators)、滚动条Width(宽度)、滚动条Color(颜色)
在 IOS 中,对 UIScrollView 的滚动条(ScrollBar Indicators)的自定义设置接口,一直都是很少的.除了能自定义简单的样式(UIScrollViewIndicatorS ...
- LINQ系列:Linq to Object相等操作符
相等操作符通过比较两个序列来检查它们相应的元素是否相同.如果两个序列有相同的元素,并且对应元素的值相同,则认为这两个序列是相等的. SequenceEqual操作符判定两个集合是否相等.判定是通过并行 ...
- IOS开发资料汇总
1 IOS账号注册.程序发布流程 1)http://jamesli.cn/blog/?p=955 2)http://jamesli.cn/blog/?p=966 3)http://jamesli.cn ...
- HighCharts从数据库中读取数据
1.index.js router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); }); ...
- 深入理解javascript作用域系列第五篇——一张图理解执行环境和作用域
× 目录 [1]图示 [2]概念 [3]说明[4]总结 前面的话 对于执行环境(execution context)和作用域(scope)并不容易区分,甚至很多人认为它们就是一回事,只是高程和犀牛书关 ...
- C#由变量捕获引起对闭包的思考
前言 偶尔翻翻书籍看看原理性的东西确实有点枯燥,之前有看到园中有位园友说到3-6年工作经验的人应该了解的.NET知识,其中就有一点是关于C#中的闭包,其实早之前在看书时(之前根本不知道C#中还有闭包这 ...
- T-Sql(五)xml操作
t-sql中的xml操作在我们平时做项目的过程中用的很少,因为我们处理的数据量很少,除非一些用到xml的地方,t-sql中xml操作一般用在数据量很大,性能优化的地方,当然我在平时做项目的时候也是没用 ...