痛点
经常使用vim,喜欢用hjkl
进行移动操作。ctrl
不容易按到,所以绑定到不常使用的大小写锁定键。
在使用笔记和编程软件如 obsidian 和 vscode时配置了vim的插件。如果在按下Esc
退出插入模式返回normal时能自动切换英文输入就不必每次按一下shift
了。
设置
方法
- 重新映射
<caps>
Ctrl
<shift caps>
CapsLock - 像vim一样移动
<Tab>
Tab
<Tab h>
左
<Tab j>
下
<Tab k>
上
<Tab l>
右 - 按下
Esc
的同时切换到英文输入,这里使用的搜狗输入法。
借用了 vscode 下 vim 配置及输入法自动切换。
需要对搜狗输入法进行设置:-
设置-常用-默认状态-中文/英文
,勾选为英文。(貌似不做这一步也行) -
<ctrl G>-搜狗输入法快捷键
,设一个不易冲突的快捷键。
原文使用的F8
,但是<ctrl F8>
在 pycharm里面是断点开关的快捷键。
我在多次尝试后选择了<ctrl )>
(<ctrl shift 0>
)。
-
后续
obsidian 和 vscode又出bug了,pycharm目前用的少,改回F8了。
pycharm好像有插件能设置normal模式保持英文输入法。
Windows
使用了autohotkey,脚本:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
Shift & CapsLock:: CapsLock
CapsLock:: Ctrl
Tab & h:: Left
Tab & j:: Down
Tab & k:: Up
Tab & l:: Right
Tab:: Tab
~Esc::
Send, ^{)} ; 搜狗输入法启动快捷键
Send, {Shift} ; 中英文切换
return
有需要的话可以使用if
语句选择在特定的软件中按键生效。
设为开机启动:
<win r>
打开运行窗口,在输入框输入 shell:startup
回车打开启动目录,将快捷方式放入即可。
Linux
联合xmodmap
和xcape
实现。
#! /bin/bash
# make caps => ctrl
# and <shift-caps> => caps
xmodmap -e "clear lock"
xmodmap -e "clear control"
xmodmap -e "add control = Caps_Lock Control_L Control_R"
xmodmap -e "keycode 66 = Control_L Caps_Lock NoSymbol NoSymbol"
# make <tab-h/j/k/l> => left/down/up/right
# need xcape downloaded from github
spare_modifier="Mode_switch" # no space around = in the bash script
xmodmap -e "keycode 23 = $spare_modifier"
xmodmap -e "keycode 43 = h H Left Left"
xmodmap -e "keycode 44 = j J Down Down"
xmodmap -e "keycode 45 = k K Up Up"
xmodmap -e "keycode 46 = l L Right Right"
# set a keysym for xcape
xmodmap -e "keycode any = Tab"
# run xcape
./path/to/xcape -e "$spare_modifier=Tab" # notice that there is no space around =
注意 xcape
的存储路径。
同样可以在开机启动时自动加载这个脚本。