J’utilise GVIM sous Windows. Et que vous voulez mapper CAPSLOCK à Ctrl + ^
Un moyen de le faire?
Btw, je vois des tonnes d’échantillons sur le Web pour échanger CAPS et Esc à l’aide du hack de registre, mais aucun d’eux n’utilise la commande VIM map, mais des outils externes et des modifications de registre.
Capslock (et Control, et Shift etc.) est une touche de modification, ce qui signifie qu’il est utilisé avec une autre touche normale pour modifier la signification de cette clé. Avant que le système d’exploitation ne transmette les touches de modification à l’application à moins qu’une touche normale n’ait également été pressée, par exemple, une pression sur CTRL
ne sera pas visible par l’application, mais CTRL-C
sera.
Linux? Avec X, utilisez xmodmap pour modifier le mappage de la clé, par exemple
xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'
Mappera Esc à la clé CapsLock. Google pour plus d’exemples.
Si votre intention est juste d’éviter de travailler en dehors de Vim, vous pouvez mettre ces lignes dans votre fichier .vimrc:
au VimEnter * !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape' au VimLeave * !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Caps_Lock'
Les cartes de première ligne s’échappent vers la clé de locking des majuscules lorsque vous entrez Vim, et la deuxième ligne renvoie les fonctionnalités normales au locking des majuscules lorsque vous quittez.
Cela nécessite Linux avec le paquet xorg-xmodmap installé.
Sous windows? Utilisez AutoHotkey . Ce n’est pas un mappage vim, mais comme les autres l’ont déclaré, vous ne pouvez pas le cartographier. J’utilise AHK pour mapper mon CAPSLOCK sur CTRL.
Pour Mac OS, vous pouvez remapper le système de touches «majuscule» dans les «préférences système».
Suivez ce chemin:
Préférences système> clavier> touches de modification
Cliquez ensuite sur la liste déroulante située à côté de «Verrouillage des majuscules» et choisissez «^ Contrôle».
Dans les systèmes Linux, cela peut être fait avec xmodmap.
Enregistrer ceci dans un fichier texte dans le dossier home
! Swap caps lock and escape remove Lock = Caps_Lock keysym Escape = Caps_Lock keysym Caps_Lock = Escape add Lock = Caps_Lock
Enregistrez ce fichier sous un nom tel que .capstoescswitc
Ensuite, exécutez ce fichier via le terminal.
xmodmap ~/.capstoescswitc
Si vous voulez le révérer, changez simplement les variables clés dans le fichier script.
Pour plus d’infos consultez cette page
Je ne pense pas que tu peux. Je crois que CAPS-LOCK est probablement traduit par le système d’exploitation avant que Vim ne le voie. Vous devez donc faire un piratage au niveau du système d’exploitation, comme les hacks de registre que vous avez déjà vus.
EDIT: autohotkey semble pouvoir être utilisé pour combler le vide vim-OS . De cette façon, une application tierce effectue les hacks au niveau du système d’exploitation, et vous ne faites que twigr cette application.
Comme il existe une solution pour Linux et Windows (Autohotkey), je voudrais suggérer d’utiliser pckeyboardhack for Mac pour remapper CapsLock partout.
Caps Lock
dehors de vim “ `
;caps_to_esc.ahk #IfWinActive, ahk_class Vim ; vim window class Capslock::Esc #IfWinActive
“ `
sudo apt-get install xdotool xbindkeys python
. Nous allons également utiliser xprop
et cut
. ~/caps_to_esc.sh
: “ `
#!/bin/bash capsOff () { python -c '\ from ctypes import *; \ X11 = cdll.LoadLibrary("libX11.so.6"); \ display = X11.XOpenDisplay(None); \ X11.XkbLockModifiers(display, c_uint(0x0100), c_uint(2), c_uint(0)); \ X11.XCloseDisplay(display) \ ' } 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=$(xprop -root _NET_ACTIVE_WINDOW | cut -f2 -d#) active_window_wm_class=$(xprop -id $active_window_id WM_CLASS) for wm_class in "${wm_classes[@]}"; do # echo "$wm_class" >> xbindkeys.debug if [ "$active_window_wm_class" == "$wm_class" ]; then # echo true >> xbindkeys.debug xdotool getactivewindow key Escape capsOff fi done
“ `
sudo chmod +x ~/caps_to_esc.sh
Ajoutez un nouveau bindnig à ~/.xbindkeysrc
:
"~/caps_to_esc.sh" Caps_Lock
xbindkeys
(si vous avez déjà démarré xbindkes
tuez-le d’abord par killall xbindkeys
).
Je suppose que l’une des raisons pour cela est de créer un soft caplock, comme d’autres l’ont mentionné, peut-être pour éviter de garder les capslock en mode normal. J’ai utilisé le plug- in vimcaps pour désactiver capslock en quittant le mode d’insertion, semble fonctionner correctement.