Comment capturer décalage onglet dans vim
Question
Je veux utiliser shift-tab
pour l'achèvement automatique et le déplacement des blocs de code visuellement. Je réfère à Make_Shift-Tab_work . Ce lien parle de la cartographie ^[[Z
à shift-tab
. Mais je ne suis pas ^[[Z
quand je presse shift-tab
. je reçois juste un tab
normal dans ce cas.
Il parle ensuite de l'aide xmodmap -pke | grep 'Tab'
pour mapper les touches de tabulation. Selon que la sortie doit être
keycode 23 = Tab
or
keycode 23 = Tab ISO_Left_Tab
Cependant, je reçois
keycode 22 = Tab KP_Tab
si j'utilise xmodmap -e 'keycode 22 = Tab ISO_Left_Tab'
et après que xmodmap -pke | grep 'Tab'
, je reçois toujours
keycode 22 = Tab KP_Tab
Cela signifie xmodmap -e 'keycode 22 = Tab ISO_Left_Tab'
en cours d'exécution n'a pas d'effet.
En fin de compte le lien mentionne l'aide xev
pour voir ce que recieves de X
quand je presse shift-tab
. Mais je n'ai pas xev
sur mon système.
Y at-il d'autre moyen que je peux capturer décalage onglet dans vim
La solution
Le lien parle précisément de se ^[[Z
lorsque vous appuyez sur Ctrl + v Maj + Tab en mode insertion . Si vous omettez le Ctrl + v , alors Vim se comportera comme si vous appuyez sur Tab .
La meilleure façon de faire reconnaître Vim <S-Tab>
, est de définir directement l'option t_kB
à la séquence d'échappement de votre terminal envoie, au lieu de vous embêter avec des cartes.
En tant que test rapide, essayez ceci dans une course Vim:
: set t_kb = Ctrl + v Esc [Z
: Imapfoo
Maintenant, lorsque vous appuyez sur Maj + Tab en mode insertion, doit être inséré foo
. Si cela a fonctionné, vous pouvez faire le changement permanent en ajoutant ce qui suit à votre vimrc.
exe 'set t_kB=' . nr2char(27) . '[Z'