Vim

如何在 vim 中但在整個作業系統中重新映射字元?

  • June 14, 2020

在我習慣於移動時,我使用vim+ ( ) (就像在遊戲中但使用 啟用它)並且我喜歡它,請不要試圖說服我這是個壞主意,事實並非如此。h``j``k``l``Alt Gr``w``a``s``d``Alt Gr

事實上,據我所知,沒有辦法映射Alt Grin vim,我所做的就是映射當您按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

我的系統上沒有執行任何桌面環境來嘗試這個,但它應該可以工作。


筆記

  1. xmodmap方法僅適用於圖形環境。此映射不適用於 Linux 控制台 ( tty)。請參閱Linux 控制台上的重新映射鍵盤
  2. 請記住,每次佈局更改時都會重置鍵盤。此方法僅推薦用於單一佈局配置。
  3. 如果您做錯了什麼,xmodmap您可以使用 刪除所有設置setxkbmap -option

引用自:https://unix.stackexchange.com/questions/592769