Comment mapper la clé CAPS LOCK dans VIM?

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.

Solution qui ne casse pas Caps Lock dehors de vim

les fenêtres

  1. Installez autohotkey.
  2. Exécuter le script autohotkey:

“ `

 ;caps_to_esc.ahk #IfWinActive, ahk_class Vim ; vim window class Capslock::Esc #IfWinActive 

“ `

Linux

  1. sudo apt-get install xdotool xbindkeys python . Nous allons également utiliser xprop et cut .
  2. Créez un script ~/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 

“ `

  1. sudo chmod +x ~/caps_to_esc.sh
  2. Ajoutez un nouveau bindnig à ~/.xbindkeysrc :

     "~/caps_to_esc.sh" Caps_Lock 
  3. 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.