Comprendre la combinaison CTRL-U


19

Dans cette réponse, j'ai rencontré l' CTRL-Uappel utilisé dans la fonction après :et avant le nom de la fonction réelle.

:nnoremap <buffer> <cr> :<C-U>call append('.', repeat([''],v:count1))<cr>

Voici ce que dit l'aide:

CTRL-U      Scroll window Upwards in the buffer.  The number of
            lines comes from the scroll option (default: half a
            screen).  If [count] given, first set the 'scroll'
            option to [count].

Je l'ai essayé moi-même et cela a fonctionné comme je le supposais. Mais je n'ai pas bien compris la partie concernant l' scrolloption. Que signifient-ils 'scroll' option?

Et en plus, cela fait une chose étrange en mode insertion. Pour autant que j'ai compris, il supprime tout, du curseur au début de la ligne, puis rejoint la ligne résultante et la ligne ci-dessus.

Réponses:


27

L'aide, par défaut, renvoie tous les mappages qui s'appliquent au mode normal. En mode normal, <C-u> fait défiler vers le haut, mais ce n'est pas ce qui nous intéresse. Pour voir ce qui se <C-u>passe en mode ligne de commande, ou cmode , (le mode dans lequel vous tapez des commandes commençant par deux points):h c_CTRL-u

                            *c_CTRL-U*
CTRL-U      Remove all characters between the cursor position and
        the beginning of the line.  Previous versions of vim
        deleted all characters on the line.  If that is the
        preferred behavior, add the following to your .vimrc: >
            :cnoremap <C-U> <C-E><C-U>

Pour comprendre pourquoi cela est utile pour un mappage en mode normal, essayez de le supprimer, essayez de taper quelque chose comme 5:, et voyez ce qui apparaît. Vous devriez voir quelque chose comme:

:.,.+4

Ceci est une gamme

Maintenant, essayez de taper 5:<C-u>et voyez ce qui apparaît. Tu devrais juste voir

:

De même en mode visuel, une pression :insère la plage

:'<,'>

C'est pourquoi vous verrez très fréquemment des mappages comme:

nnoremap foo :<C-u>bar

ou

xnoremap foo :<C-u>bar
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.