Vim
如何在 vim 中但在整個作業系統中重新映射字元?
在我習慣於移動時,我使用
vim
+ ( ) (就像在遊戲中但使用 啟用它)並且我喜歡它,請不要試圖說服我這是個壞主意,事實並非如此。h``j``k``l``Alt Gr``w``a``s``d``Alt Gr
事實上,據我所知,沒有辦法映射
Alt Gr
invim
,我所做的就是映射當您按Alt Gr
+(w``a``s
) 時出現的那些類似希臘語的字元:łæßð。所以,我覺得這種替換箭頭的方式對我的手指來說非常舒服,我真的很想能夠在任何地方使用它,不僅是在
vim
,我一直在閱讀如何在 Linux 中重新映射鍵(我使用 Manjaro)但是看起來您只能將一個鍵碼映射到另一個鍵碼,而我想做的是將字元(łæßð)映射到箭頭的鍵碼。有人知道該怎麼做嗎?
從我的
.vimrc
:"movement with a,d,w,s noremap æ <left> noremap ð <right> noremap ß <down> noremap ł <up> inoremap æ <left> inoremap ð <right> inoremap ß <down> inoremap ł <up>
發行版:Manjaro(核心:5.6.12-1-MANJARO)
桌面環境:KDE Plasma
簡短的回答
xmodmap -e 'keycode 38 = a A a A Left' xmodmap -e 'keycode 40 = d D d D Right' xmodmap -e 'keycode 25 = w W w W Up' xmodmap -e 'keycode 39 = s S s S Down'
在任何圖形環境啟動腳本中編寫這些行。
詳細解答
xmodmap
可以使用該命令重新映射鍵盤事件。例如,如果要將Altr Gr
+重新映射a
到左箭頭,請使用以下命令:xmodmap -e 'keycode 38 = a A a A Left'
您可以使用命令查找特定鍵的鍵碼
xev
:當按下某個鍵時,終端會輸出包括鍵碼在內的資訊。您可以使用ArchWiki中的以下命令僅輸出相關資訊:xev | awk -F'[ )]+' '/^KeyPress/ { a[NR+2] } NR in a { printf "%-3s %s\n", $5, $8 }'
等號信號右邊的五個參數對應修飾符:
---> Caps Lock + a = A | ------> Shift + a = A | | xmodmap -e 'keycode 38 = a A a A Left' --> Alt. Gr + a = Left | | -----> a = a | ----> Ctrl. + a = a
為了在 KDE 啟動時執行這些行,您可以在
~/.config/autostart/
文件夾中添加一個桌麵條目。您需要兩個文件:一個包含xmodmap
設置,另一個用於啟動桌麵條目。讓我們將映射設置寫入~/.config/xmodmap/xmodmaprc
:keycode 38 = a A a A Left keycode 40 = d D d D Right keycode 25 = w W w W Up keycode 39 = s S s S Down
這是桌麵條目文件的範例
~/.config/autostart/xmodmap.desktop
:[Desktop Entry] Name[en_US]=Xmodmap Comment[en_US]=xmodmap ~/.config/xmodmap/xmodmaprc Exec=/usr/bin/xmodmap ~/.config/xmodmap/xmodmaprc Icon=application-default-icon X-KDE-Autostart-enabled=true Type=Application
我的系統上沒有執行任何桌面環境來嘗試這個,但它應該可以工作。
筆記
- 該
xmodmap
方法僅適用於圖形環境。此映射不適用於 Linux 控制台 (tty
)。請參閱Linux 控制台上的重新映射鍵盤。- 請記住,每次佈局更改時都會重置鍵盤。此方法僅推薦用於單一佈局配置。
- 如果您做錯了什麼,
xmodmap
您可以使用 刪除所有設置setxkbmap -option
。