2008-11-11 4 views
37

J'ai une entrée dans mon fichier .vimrc qui le fait passer en bas de la fenêtre d'affichage lorsque je clique sur la barre d'espace. Il ressemble à ceci:Comment est-ce que je peux faire passer la page shift + barre d'espace dans Vim?

map <Space> <PageDown> 

Je veux créer une autre clé qui mappage pages vers le haut de la fenêtre lors de la tenue déplacement et de frapper la barre d'espace. J'ai essayé les entrées suivantes:

map <Shift><Space> <PageUp> 
map <S-Space> <PageUp> 

Aucune de ces deux méthodes. Quelqu'un sait-il comment réaliser cette fonctionnalité?

Répondre

31

Vous ne pouvez pas. La solution de CMS fonctionnera pour gVim, mais pas dans vim parce que les terminaux ne peuvent pas faire la différence entre <Space> etS-Space > car les curses les voient de la même façon. Il pourrait être possible à l'avenir si vim obtient le support libtermkey et que votre terminal supporte les bonnes séquences <CSI> (xterm le fait s'il est correctement configuré, rien d'autre ne l'est encore).

+0

Pourrait vouloir modifier votre réponse ... ne peut pas distinguer entre quoi? Je suppose que vous voulez dire que le terminal ne peut pas faire la distinction entre CTRL-SPACE et simple SPACE par lui-même. – m0j0

+0

Oops, oui, il mangeait tout entre moins et plus que des signes. Fixé. – Zathrus

+0

Pouvez-vous lier quelque chose qui explique ce que signifie "correctement configuré"? – Unode

3

Utilisez ceci:

map <Space> ^D " Pagedown when press Space 
map <S-Space> ^U " Page Up when press Shift Space 

Pour obtenir le^D et^symbole U correctement appuyez simplement sur Ctrl-V Contrôle-D et de contrôle-U Ctrl-V

+0

Fonctionne sur ma machine! :-) –

+4

Ce faisant, il bascule lorsque vous utilisez à la fois Space et Shift Space ... J'ai essayé ceci dans Debian Linux et OS X. Je cours respectivement VIM 7.0 et VIM 7.2 – jerodsanto

+0

Ne fonctionne pas dans ma boîte Arch . Fonctionne probablement uniquement sur OSX? – Kevin

2

Pour Mac OS X:

nnoremap <Space> <C-d> 
nnoremap <S-Space> <C-u> 
10

Si vous utilisez vim à l'intérieur iTerm2 vous pouvez mapper décalage d'espace pour ctrl + U en envoyant la clé hexagonale 15. Voici une capture d'écran:

enter image description here

pour rechercher un code hexadécimal pour une combinaison ctrl + lettre, par exemple Ctrl + U, vous pouvez effectuer les opérations suivantes:

  • En vim entrer dans le mode d'insertion
  • Appuyez sur Ctrl + v puis Ctrl + u puis ctrl + c puis ga
  • diverses représentations numériques seront imprimées au bas

Vous pouvez appliquer cette idée à d'autres émulateurs qui prennent en charge la cartographie des touches.

Questions connexes