在 Vim 中阻止错误的 shift 键

Mar*_*ing 7 vim

我知道我应该对用左手输入的字母使用右 Shift 键。但我经常只用右手插入冒号,无名指移动,食指移动到冒号键。

我想强迫自己停止这样做,至少在 Vim 中是这样。例如,有什么方法可以防止我使用带有“Q”的“Right-Shift”?

Den*_*nis 4

只要您不介意破坏您的CapsLock密钥, Xmodmap就可以满足您的要求。

Xmodmap 可以区分左移键和右移键,因此我们可以首先重新映射RightShiftModeSwitch以获得我们的方式:

xmodmap -e "keysym Shift_R = Mode_switch"
Run Code Online (Sandbox Code Playgroud)

修改键行为的基本语法是

xmodmap -e "keycode  KEYCODE = KEYSYMBOL1 KEYSYMBOL1 KEYSYMBOL3 KEYSYMBOL4"
xmodmap -e "keysym KEYSYMBOL = KEYSYMBOL1 KEYSYMBOL1 KEYSYMBOL3 KEYSYMBOL4"
Run Code Online (Sandbox Code Playgroud)

在哪里

  • KEYSYMBOL2在按下 的同时按下该键时会触发Shift
  • KEYSYMBOL3在按下 的同时按下该键时会触发ModeSwitch
  • KEYSYMBOL4Shift当按下+的同时按下该键时会触发ModeSwitch
  • KEYSYMBOL1当按下没有上述情况的按键时会被触发。
  • ModeSwitch默认情况下AltGr(仅适用于某些键盘布局)。

理论就讲这么多。实际上,在修改Shift+Letter组合时,这些重新映射的行为可能会略有不同。我不能代表 Kubuntu,但在这些情况下,某些 Unity 应用程序将覆盖 Xmodmap 指定的行为。

要重新配置每个键以仅接受正确的修饰符,我发现最可靠的方法如下:

尖端:

  • 要使重新映射永久存在,请在 中创建/编辑 shell 脚本~/.kde/Autostart/,使其可执行并在其中保存相应的命令。

  • 要撤消所有重新映射,只需执行以下命令:

    setxkbmap
    
    Run Code Online (Sandbox Code Playgroud)