我在Windows下使用GVIM。并希望将胶囊锁映射到Ctrl+^
有办法做到这一点吗?
顺便说一句,我在网上看到了大量如何使用注册表hack来交换map和Esc的示例,但其中没有一个使用VIM map命令,而是使用外部工具和注册表更改。
发布于 2017-10-02 05:14:42
不会中断的解决方案
vim之外
窗口
安装自动热键。
运行autohotkey脚本:
;caps_to_esc.ahk
#IfWinActive, ahk_class Vim ; vim window class
Capslock::Esc
#IfWinActive
Ubuntu
运行以下命令:
wget -O - https://raw.githubusercontent.com/grabantot/scripts/master/install/install_caps_to_esc.sh | bash
或者手动执行以下操作:
..。我们还将使用
和
(默认情况下应安装)。
创建
脚本:
debug_file=/dev/shm/caps_to_esc.debug
debug_msg () {
echo $(date +%s%3N) "$@" >> $debug_file
}
caps_off () {
is_caps_on="false"
xset q | grep "Caps Lock:\s*on" && is_caps_on="true"
debug_msg "is_caps_on ""$is_caps_on"
[ "$is_caps_on" == "false" ] && return 3
debug_msg "Sending Caps Lock"
debug_msg "ignore_next"
xdotool key Caps_Lock
}
should_ignore="false"
tail -n 1 $debug_file | grep "ignore_next" && should_ignore="true"
if [ "$should_ignore" == "true" ]; then
debug_msg "ignored"
exit 1
fi
echo -n "" > $debug_file
# get wm_class by 'xprop | grep WM_CLASS'
declare -a wm_classes=( \
'WM_CLASS(STRING) = "gnome-terminal-server", "Gnome-terminal"' \
'WM_CLASS(STRING) = "gvim", "Gvim"' \
'WM_CLASS(STRING) = "code", "Code"' \
'WM_CLASS(STRING) = "google-chrome", "Google-chrome"' \
)
active_window_id=$(xdotool getactivewindow)
active_window_wm_class=$(xprop -id $active_window_id WM_CLASS)
debug_msg "active_wm_class ""$active_window_wm_class"
detected_wm_class=""
for wm_class in "${wm_classes[@]}"; do
# debug_msg "$wm_class"
if [ "$active_window_wm_class" == "$wm_class" ]; then
detected_wm_class="$wm_class"
debug_msg "detected_wm_class ""$detected_wm_class"
fi
done
[ "$detected_wm_class" == "" ] && exit 2
xdotool keyup "Caps_Lock" # !!! very important
caps_off
debug_msg "Sending Escape"
xdotool key "Escape"
debug_msg "sent"
将新绑定添加到
"bash $HOME/caps_to_esc.sh"
Caps_Lock
工作原理:
将确定Caps何时
_
按下Lock并调用
脚本
在脚本中检测活动窗口wm
_
类依据
检查是否为wm
_
类是我们感兴趣的(gnome-terminal、vscode、gvim、chrome),如果不是就退出
通过以下方式发送转义密钥
检查Caps Lock是否通过打开
如果是,则发送Caps
_
锁键通过
将检测Caps
_
锁定由我们发送,但我们忽略它
https://stackoverflow.com/questions/2176532
复制相似问题