ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

解决WSL、VS Code等Windows软件中Vim中文输入法的切换问题

2022-06-29 01:33:08  阅读:442  来源: 互联网

标签:输入法 Code return Windows ahk IfWinActive exe 即可


问题描述

在 Windows 系统下,如果使用 (Neo)Vim 编辑器,比如 WSL、VS Code 或者其它 IDE 的 VIM 功能,如果使用中文输入法,在由 Insert 模式进入 Normal 时,难免需要不停切换中英文输入法,有时则会忘记切换,导致在 Normal 模式下输入中文。

常见的一些解决方案包括:im-select 或者 fitcx。而这篇文章只需使用 Windows 平台下的一款自动化工具,借助 Windows 平台进行自动切换。

解决办法

1. 下载英文输入法

打开 系统设置,进入 时间和语言 --> 语言和区域,然后点击 添加语言 按钮。

找到 English(United States) ,点击 下一页 进行安装即可。

如果有其它语种的需求,安装对应语言即可。

安装完成后,进入 时间和语言 --> 输入 --> 高级键盘设置,勾选 允许我为每个窗口应用不同的输入法 即可。

2. 下载AutoHotKey

打开 AutoHotKey 官网下载相应软件,点击 Download Current Version 即可。

下载完成后,进行安装。安装包很小,仅仅 3MB。选择默认安装,或者自定义安装都可以。

自定义安装仅仅更改安装路径即可,其它使用默认即可。

3. 获取语言代码

新建一个 txt 文本文件,输入如下内容:

#z::
SetFormat, Integer, H
WinID:=WinActive("A")
ThreadID:=DllCall("GetWindowThreadProcessId", "UInt", WinID, "UInt", 0) 
InputLocaleID:=DllCall("GetKeyboardLayout", "UInt", ThreadID, "UInt") 
Clipboard:=InputLocaleID
MsgBox, %InputLocaleID%
return

完后后保存,将其后缀改为 .ahk,然后双击运行,会自动进入系统托盘,如图所示:

image

如果要暂停脚本热键,只需右键点击相对应的脚本,然后选择 Suspend HotKey 即可。

脚本启动后,按下 Win + z 组合键,即可出现当前语言输入法的相对应代码。记录下来,然后切换到另一种语言的输入法,再次按下上述按键,查看其对应代码即可。

如图,为 中文(简体,中国) 输入法的对应代码:

image

如图,为 英语(美国) 输入法的对应代码:

image

其它的语言输入同样按照上述方法进行操作。

完成后,右键退出该脚本即可。

4. 编写脚本

同样新建一个 txt 文件,然后输入如下内容:

#IfWinActive  ahk_exe WindowsTerminal.exe
:*:o::
{
	sendinput,{o}
	PostMessage, 0x50, 0, 0x8040804, , A
}
return
#If

#IfWinActive  ahk_exe WindowsTerminal.exe
:*:a::
{
	sendinput,{a}
	PostMessage, 0x50, 0, 0x8040804, , A
}
return
#If

#IfWinActive  ahk_exe WindowsTerminal.exe
:*:i::
{
	sendinput,{i}
	PostMessage, 0x50, 0, 0x8040804, , A
}
return
#If

#IfWinActive  ahk_exe WindowsTerminal.exe
ESC::
{
	sendinput,{Esc}
	PostMessage, 0x50, 0, 0x4090409, , A
}
return
#If

其中,如果按下 o、i、a 就进入 vim 的 Insert 模式,切换为中文输入法。如果按下 Esc,就进入了 vim 的 Normal 模式,切换为英文输入法。

其中的 0x80408040x4090409 为之前所查看的输入法代码。

sendinput 表示将按下的键再输出出去,以响应 vim 操作。

#IfWinActive 表示检测特定的可执行文件进行触发。由于作者使用的是 WSL2,因此我设置的响应程序为 Windows Terminal。如果读者使用的是 VS Code,那么可以将 WindowsTerminal.exe 替换为 Code.exe。如果要响应其它软件,将其更换为相对应的可执行文件名称即可。

其它热键也可以自行设置。常用的特殊按键如下:

  • !: Alt
  • ^: Ctrl
  • +: Shift
  • &: 用于连接两个按键(含鼠标按键)合并成为一个自定义热键
  • space: 空格键
  • enter: 回车键
  • Esc: Esc键

完成之后,将脚本后缀改为 .ahk,启动即可。配置完成!

标签:输入法,Code,return,Windows,ahk,IfWinActive,exe,即可
来源: https://www.cnblogs.com/tuilk/p/16421831.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有