在 Visual Studio 等編輯器/IDE中自動切換輸入法,不需要手動的有沒有?

来源:http://www.cnblogs.com/lspcieee/archive/2016/02/19/5201381.html
-Advertisement-
Play Games

使用Visual Studio寫代碼,經常遇到的一個問題就是切換中文輸入法麻煩,輸入完註釋//,要切換到中文,輸入完引號,要輸入中文,然後還需要切換回來,有沒有? 有時候中文輸入法忽然失效有沒有?明明在中文輸入法狀態下,輸入不了中文,有沒有?


使用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 代碼如下:

  1 ;=====分組配置
  2 ;中文輸入法的分組
  3 GroupAdd,cn,ahk_exe QQ.exe  ;QQ
  4 GroupAdd,cn,ahk_exe WINWORD.EXE ;word
  5 GroupAdd,cn,ahk_exe MindManager.exe
  6 
  7 ;英文輸入法的分組
  8 GroupAdd,en,ahk_exe devenv.exe  ;Visual Studio
  9 GroupAdd,en,ahk_exe dopus.exe 
 10 GroupAdd,en,ahk_class Notepad++
 11 
 12 ;編輯器分組
 13 GroupAdd,editor,ahk_exe devenv.exe  ;Visual Studio
 14 GroupAdd,editor,ahk_exe notepad.exe ;記事本
 15 GroupAdd,editor,ahk_class Notepad++
 16 
 17 
 18 
 19 
 20 ;函數
 21 ;從剪貼板輸入到界面
 22 sendbyclip(var_string)
 23 {
 24     ClipboardOld = %ClipboardAll%
 25     Clipboard =%var_string%
 26     ClipWait
 27     send ^v
 28     sleep 100
 29     Clipboard = %ClipboardOld%  ; Restore previous contents of clipboard.
 30 }
 31 
 32 
 33 setChineseLayout(){
 34     ;發送中文輸入法切換快捷鍵,請根據實際情況設置。
 35     send {Ctrl Down}{Shift}
 36     send {Ctrl Down},
 37     send {Ctrl Down}{Shift}
 38     send {Ctrl Down},
 39     send {Ctrl Up}
 40 }
 41 setEnglishLayout(){
 42     ;發送英文輸入法切換快捷鍵,請根據實際情況設置。
 43     send {Ctrl Down}{Shift}
 44     send {Ctrl Down},
 45     send {Ctrl Down}{Shift}
 46     send {Ctrl Down},
 47 
 48     send {Ctrl Down}{Space}
 49     send {Ctrl Up}
 50 }
 51 
 52 ;監控消息回調ShellMessage,並自動設置輸入法
 53 Gui +LastFound
 54 hWnd := WinExist()
 55 DllCall( "RegisterShellHookWindow", UInt,hWnd )
 56 MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
 57 OnMessage( MsgNum, "ShellMessage")
 58 
 59 ShellMessage( wParam,lParam ) {
 60     If ( wParam = 1 )
 61     {
 62         WinGetclass, WinClass, ahk_id %lParam%
 63         ;MsgBox,%Winclass%
 64         Sleep, 1000
 65         WinActivate,ahk_class %Winclass%
 66         ;WinGetActiveTitle, Title
 67         ;MsgBox, The active window is "%Title%".
 68         IfWinActive,ahk_group cn
 69         {
 70             setChineseLayout()
 71             TrayTip,AHK, 已自動切換到中文輸入法
 72             return
 73         }
 74         IfWinActive,ahk_group en
 75         {
 76             setEnglishLayout()
 77             TrayTip,AHK, 已自動切換到英文輸入法
 78             return
 79         }
 80     }
 81 }
 82 
 83 ;在所有編輯器中自動切換中英文輸入法
 84 #IfWinActive,ahk_group editor
 85 :*:// ::
 86     ;//加空格 時 切換到中文輸入法
 87     setEnglishLayout()
 88     sendbyclip("//")
 89     setChineseLayout()
 90 return
 91 :Z*:///::
 92     ;///註釋時 切換到中文輸入法(也可以輸入///加空格)
 93     setEnglishLayout()
 94     sendbyclip("//")
 95     SendInput /
 96     setChineseLayout()
 97 return
 98 :*:" ::
 99     ;引號加空格 時 切換到中文輸入法
100     setEnglishLayout()
101     SendInput "
102     setChineseLayout()
103 return
104 :*:`;`n::
105     ;分號加回車 時 切換的英文輸入法
106     setEnglishLayout()
107     sendbyclip(";")
108     SendInput `n
109 return
110 :Z?*:`;`;::
111     ;兩個分號時 切換的英文輸入法
112     setEnglishLayout()
113 return
114 :Z?*:  ::
115     ;輸入兩個空格 切換的中文輸入法
116     setEnglishLayout()
117     setChineseLayout()
118 return
119 
120 #IfWinActive

 

 

 

已經編譯後的exe文件

已設置Visual Studio,Notepad++,記事本為編輯器,支持開發自動切換:

已設置qq,word,MindManager自動切換為中文輸入法。

已經設置Visual Studio,Notepad++,Directory Opus自動切換為因為輸入法。

下載(博客園上傳不了附件),請前往:

猛擊

 

如果需要自己配置,請修改ahk源代碼

Github地址:

https://github.com/lspcieee/lspcieee_ahk

求粉,求follow

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天老師說了一個例子,提生面向對象思想,和大家分享下 雙擊可對其評價和評分 相對以前 我們有可能會這樣寫 //定義一個Tool類進行傳值 Tool.name = lv.SelectedItems[0].SubItems[1].Text;//姓名 Tool.pingjia = lv.SelectedI
  • 在程式中建立如下方法。 #region 刷新數據源 /// ///刷新數據源 /// /// dgv that is needed to refresh public void RefreshDataSourceOndgv(DataGridView dgv) ...
  • 在代碼生成工具的各種功能規劃中,我們一向以客戶的需求作為驅動,因此也會根據需要增加一些特殊的功能或者處理。在實際的開發中,雖然我們一般以具體的表進行具體業務開發,但是有些客戶提出有時候視圖開發也是很常見的,為了提高代碼生成和界面生成的效率,基於視圖開發的過程也應該支持。還有主從表的界面生成操作,在很...
  • 最近在做個包含了大量重覆樣式的控制項的網站. 如果用MVC的話,我可以針對每個需要單獨塊編輯的Model寫一個局部視圖. 然後根據不同邏輯需求拼起來.用現成MVC框架非常容易做到. 但環境是3.5的最高只能用MVC2,沒有razor語法,加上沒裝開發環境. 於是想乾脆自己寫一個模板生成HTML的框架,
  • 這個是2011年寫的一個技術貼,現在看可能有點過時了,有興趣的朋友也可以看一下。 一. 描述 在開發winform程式時不會考慮頁面刷新問題,只要控制好線程別導致假死就ok了,但是在開發web頁面程式時,刷新有的時候真是頭痛的很。頁面回調可以解決這個問題,下麵簡單就實用來講對callback做下介紹
  • 前言: NPOI 技術在別人看來可能有點老生長談了,但是對於我現在處於的這個創業型公司,還是挺前沿的,不知道是前輩們不知道這個技術,還是懶得去對現有的軟體進行修改,因為在現有的軟體中,幾乎所有的數據導入導出都是依賴於: Excel.Application(設置excel組件,系統許可權,然後還得考慮版
  • 1、sealed 修飾符 概念: C#提出了一個密封類(sealed class)的概念,幫助開發人員來解決這一問題。 密封類在聲明中使用sealed 修飾符,這樣就可以防止該類被其它類繼承。如果試圖將一個密封類作為其它類的基類,C#將提示出錯。理所當然,密封類不能同時又是抽象類,因為抽象總是希望被
  • ---恢復內容開始--- RazorEngine模板引擎大大的幫助了我們簡化字元串的拼接與方法的調用,開源之後,現在在簡單的web程式,winform程式,甚至控制台程式都可以利用它來完成。 但如何在使用中調用方法和使用自定義模板呢?來看這樣一個例子 1 string str="hello @Mod
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...