Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

单向切换(中->英,Insert 后不切换回去)的设置方法 #2

Closed
transtone opened this issue Oct 9, 2018 · 16 comments
Closed

Comments

@transtone
Copy link

  "vim.autoSwitchInputMethod.enable": true,
  "vim.autoSwitchInputMethod.defaultIM": "com.apple.keylayout.ABC",
  "vim.autoSwitchInputMethod.obtainIMCmd": "/usr/local/bin/im-select",
  "vim.autoSwitchInputMethod.switchIMCmd": "/usr/local/bin/im-select {im}",

这样设置之后,输入法会在 normal 和 insert 之间切换,我想设置成单向,只在 insert --> normal 的时候切换到 ABC,而在 normal --> insert 之时不做任何切换。可以这样设置吗?

@daipeihust
Copy link
Owner

目前是做不到的,我会考虑后面怎么支持,但我想知道你为什么会有这种需求

@daipeihust
Copy link
Owner

我知道可以怎么做到了,你可以自己写一个简单的脚本封装im-select,然后只有检测到输入是com.apple.keylayout.ABC时去调用im-select,当输入为其他时就什么都不做。

@daipeihust
Copy link
Owner

然后配置里就改成你自己的脚本路径

@transtone
Copy link
Author

transtone commented Oct 11, 2018

"vim.autoSwitchInputMethod.switchIMCmd": "/usr/local/bin/im-select com.apple.keylayout.ABC {im}"

刚试了一下,这样就ok了。

因为我需要随时保证输入法是英文的。
在一个地方打完汉字之后,需要回到normal模式,移动到其他行继续打代码。如果进入Insert模式时输入法是中文,会需要切换回英文,非常不习惯。

@liby
Copy link

liby commented May 20, 2019

@daipeihust

  • 如果在windows系统下是不是只用vscode里改成
    "vim.autoSwitchInputMethod.switchIMCmd": "D:\\Run\\im-select.exe com.windows.keylayout.ABC {im}",
    就可以

@liby
Copy link

liby commented May 20, 2019

试了一下,可以的

@daipeihust
Copy link
Owner

这样的话无论是进入Insert模式还是退出到normal 都会将输入法切换为英文 感觉你探索出了一种新玩法

@liby
Copy link

liby commented May 22, 2019

@daipeihust

  • 今天发现这个设置失效了,设置了这个com.windows.keylayout.ABC以后和没有开启im-select一样,可是我上次明明测试过了,是可以用的.
  • 我以为是GitBash的问题,我又把babun下载了回来,发现还是无效,待我再研究一下.
    demo11

@daipeihust
Copy link
Owner

daipeihust commented May 22, 2019

@liby
com.windows.keylayout.ABC这个参数是有问题的,com.apple.keylayout.ABC是mac上参数,不是将apple改为windows就可以了。Windows上应该这样配置:

 "vim.autoSwitchInputMethod.switchIMCmd": "D:\\Run\\im-select.exe 1033 {im}"

这样就可以实现单向切换了

还有就是这个功能跟gitbash或者babun是无关的,使用babun只是为了让你在命令行中运行im-select.exe获取英文输入法的key,然后配置defaultIM

@liby
Copy link

liby commented May 22, 2019

@daipeihust

  • 因为我以为GitBash无法识别com.apple.keylayout.ABC这个命令
  • 我一开始是试过1033和2052的,因为没有效果,才想到把apple换成windows试试看,当时我清楚的记得是有效果的,而且我发现将defaultIM设置为"2052"并不会默认切换到中文输入法.
    demo

@daipeihust
Copy link
Owner

@liby
你现在重新下载一下im-select.exe,我刚刚改了一下代码,让它支持传入多个参数了
然后按照这个来配置应该就OK了:

"vim.autoSwitchInputMethod.switchIMCmd": "D:\\Run\\im-select.exe 1033 {im}"

@daipeihust
Copy link
Owner

@liby
你也是想要达到在normal和insert模式下都保持英文输入法的效果吧

@liby
Copy link

liby commented May 22, 2019

@daipeihust

  • 我想要的效果大概是:
    • insert模式下,以下图这种输入法状态(中文输入法下的英文输入模式)切换到normal模式
      1
    • 这时候输入法被切换为英文输入法(如下图),而我在这时进入insert模式
      2
    • 进入insert模式以后,输入法不会切换到中文输入法的中文模式,或者就是还原之前进入normal模式之前的输入法状态(如下图),不做什么切换(似乎im-select也只能切换输入法,而不能控制中文输入法的中英文输入模式)
      Snipaste_2019-05-22_15-11-00
    • 而不会说,我在insert模式下手动将中文输入法的输入模式切换为英文,这时候进入normal模式,再之后进入insert模式,却自动变回了中文输入法的中文模式(如下图)
      Snipaste_2019-05-22_15-14-37

@daipeihust
Copy link
Owner

daipeihust commented May 22, 2019

@liby
确实控制不了中文输入法的不同中英输入模式,你可以将你的中文输入法的默认模式设置为英文

@liby
Copy link

liby commented May 22, 2019

@daipeihust

  • 是的,将默认模式设置为英文也是一开始想到的解决方案
  • 更新接收多个参数以后,进入insert模式或者退回到normal模式都会将输入法切换到英文
  • 不管怎么样,还是很感谢您能在工作时间回复我

@transtone
Copy link
Author

transtone commented Jul 6, 2024

mac设置

  "vim.autoSwitchInputMethod.enable": true,
  "vim.autoSwitchInputMethod.defaultIM": "com.apple.keylayout.ABC",
  "vim.autoSwitchInputMethod.obtainIMCmd": "/usr/local/bin/im-select",
  "vim.autoSwitchInputMethod.switchIMCmd": "/usr/local/bin/im-select com.apple.keylayout.ABC {im}"

Linux 设置

"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "1",
"vim.autoSwitchInputMethod.obtainIMCmd": "/usr/bin/fcitx5-remote",
"vim.autoSwitchInputMethod.switchIMCmd": "/usr/bin/fcitx5-remote -c {im}",

windows 设置

  "vim.autoSwitchInputMethod.enable": true,
  "vim.autoSwitchInputMethod.defaultIM": "1033",
  "vim.autoSwitchInputMethod.obtainIMCmd": "D:\\bin\\im-select.exe",
  "vim.autoSwitchInputMethod.switchIMCmd": "D:\\bin\\im-select.exe 1033 {im}",

如果 windows 低版本(<10.0.17134.0)下不能运行的,可以试试 https://github.com/transtone/im-select/raw/master/im-select-win/im-select/x64/Release/im-select.exe

如果在 vscode ssh/wsl模式下不生效 ,可以换一个 vscodevim 版本:https://github.com/transtone/Vim/releases

@transtone transtone changed the title 如何设置单向切换? 单向切换(中->英,Insert 后不切换回去)的设置方法 Jul 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants