J'utilise GVIM sous Windows. Et voulez mapper CAPSLOCK sur Ctrl + ^
Une façon de faire ça?
Btw, je vois des tonnes d'échantillons sur le Web comment échanger CAPS et Esc en utilisant le piratage du registre, mais aucun d'eux n'utilise la commande VIM map;.
Linux? Avec X, utilisez xmodmap pour modifier le mappage de clé, par exemple.
xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'
Mappera Echap sur la touche CapsLock. Google pour plus d'exemples.
Si votre intention est simplement d'éviter de travailler en dehors de Vim, vous pouvez insérer 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'
La première ligne mappe la touche d'échappement avec la touche majuscule lorsque vous entrez dans Vim, et la deuxième ligne rétablit le verrouillage majuscule lorsque vous quittez.
Cela nécessite Linux avec le paquet xorg-xmodmap installé.
Sous les fenêtres? Utilisez AutoHotkey . Ce n'est pas un mappage Vim, mais comme d'autres l'ont dit, vous ne pouvez pas le mapper. J'utilise AHK pour mapper mon CAPSLOCK sur CTRL.
Pour Mac OS, vous pouvez remapper la clé "majuscule" dans l'ensemble du système 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 à côté de «majuscules» et choisissez «^ Contrôle».
Capslock (et Control, Shift etc.) est une touche de modification, ce qui signifie qu’elle est utilisée avec une autre touche normale pour modifier la signification de cette touche. Autant que je sache, le système d’exploitation ne transmet pas les touches de modification à l’application, sauf si une touche normale a également été actionnée, par exemple En appuyant sur CTRL
ne sera pas vu par l'application, mais CTRL-C
sera.
Sur les systèmes Linux, cela peut être fait avec xmodmap.
Enregistrer ceci dans un fichier texte dans le dossier de départ
! Swap caps lock and escape
remove Lock = Caps_Lock
keysym Escape = Caps_Lock
keysym Caps_Lock = Escape
add Lock = Caps_Lock
Enregistrez ce fichier avec un nom comme .capstoescswitc
Puis exécutez ce fichier via le terminal.
xmodmap ~/.capstoescswitc
Si vous voulez le respecter, il vous suffit de basculer les variables clés dans le fichier de script.
Pour plus d'informations, reportez-vous à cette page page
Je ne pense pas que vous puissiez ... Je crois que CAPS-LOCK est probablement traduit par le système d'exploitation avant que vim ne le voie jamais ... donc vous auriez besoin de faire un piratage au niveau du système d'exploitation, comme les hacks de registre que vous avez déjà vu.
EDIT: autohotkey semble pouvoir être utilisé pour combler le fossé vim-OS . De cette façon, une application tierce fait des piratages au niveau du système d'exploitation et vous ne faites que l'accrocher à cette application.
Caps Lock
en 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
Ajouter un nouveau bindnig à ~/.xbindkeysrc
:
"~/caps_to_esc.sh"
Caps_Lock
xbindkeys
(si vous avez déjà lancé xbindkes
, supprimez-le d'abord avec killall xbindkeys
).
Puisqu'il existe une solution pour Linux et Windows (Autohotkey), j'aimerais suggérer d'utiliser pckeyboardhack pour Mac pour remapper CapsLock partout.
Je suppose que l’une des raisons de cette opération est de créer un capslock souple, comme d’autres l'ont déjà mentionné, afin d'éviter éventuellement de garder le majuscule en mode normal. J'ai utilisé le plugin vimcaps pour désactiver Capslock lorsque vous quittez le mode insertion, semble fonctionner correctement.
Sur mac, il est également possible d’utiliser Karabiner ( https://pqrs.org/osx/karabiner/ )
$ brassin installez des mousquetons
Une fois installé, vous pouvez associer la touche capslock à la touche esc dans l’onglet Modifications simples. La mise en garde est qu'il s'agit de l'ensemble du système, ce qui signifie que vous perdez la touche majuscule partout. OMI qui a besoin de capslock.