簡體   English   中英

為什么在 Vim 中將 Esc 重新映射到 CAPS LOCK 如此復雜?

[英]Why is so complicated to remap Esc to CAPS LOCK in Vim?

我看到了 vim wiki 提示,它說為了將 Esc 重新映射到 CAPS LOCK,您必須編輯以下 Windows 代碼:

REGEDIT4
[HKEY_CURRENT_USER\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,01,00,3a,00,00,00,00,00

是否可以僅通過在 _vimrc 中添加或修改行來將 Esc 重新映射到 CAPS LOCK?

我建議您為此使用 AutoHotkey。

您可以更改每個應用程序的熱鍵:

SetTitleMatchMode,2
#IfWinActive,VIM
   CAPSLOCK::ESC
return

#IfWinActive
   CAPSLOCK::CTRL
return

例如,此腳本將大寫字母設置為在 vim 中轉義,並控制其他任何地方。

大寫鎖定鍵沒有 vim 鍵標識符,因此您必須使用掃描碼來完成。

這就像嘗試將 ctrl 鍵或 shift 鍵映射到某個東西 - 這些鍵本身不會做任何事情,它們是鍵修飾符,所以它們不能以同樣的方式被困住。

映射必須在操作系統級別而不是 vim 完成,因此復雜性來自操作系統。 例如,在我的 Ubuntu 機器上,我在~/.Xmodmap有以下~/.Xmodmap

! Esc on caps lock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape

但是,我認為 REGEDIT 腳本並沒有那么糟糕。 有點丑,但只有兩行!

另一種對我來說效果很好的替代方法是使用本網站中的說明

本質上:安裝 Microsoft 的鍵盤布局創建器,然后編輯其源代碼以允許重新映射 CAPS LOCK 並創建您自己的自定義布局。

您也可以使用 Ctrl-C 轉義(至少在 vim 中可用)。 這是我通常使用的。 不過,我通常會交換控制和大寫鎖定,並且是通過 Windows 中的注冊表設置和 ubuntu 中的鍵盤配置來實現的。

編輯:正如@mMontu 親切地指出,Ctrl-C 比 Esc 更殘酷:正如在這個適當的問題中所述

vim 不會費心檢查你是否只寫了一個縮寫的一部分,並且它不會在你每次離開插入模式時運行你的插件設置的花哨的自動命令

我沒有注意到,因為我的 vimming 還沒有那么先進。

你也可以試試這個: SharpKeys 我用它交換了 CapLock 和 Esc。

在 Windows 上將CAPSLOCK重新映射到ESCCTRL

我已經在這個答案中描述的一個非常好的工具使您可以將CAPSLOCK重新映射到兩者

  1. ESC (單獨按下時)和
  2. CTRL (當用其他鍵按下時)

只需使用ililim 的這個小小的開源軟件

為此,您不需要管理員權限,並且ESCCTRL仍在按預期工作。

我用它來享受方便的CTRL + anything按下而不會傷害我的小指,並在 Vim 中切換我通過 MobaXterm 中的 ssh 使用的模式。 安裝只需按照此說明進行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM