VIM Exécution d'un raccourci clavier dans une fonction

13

J'ai une fonction et je veux exécuter un raccourci clavier, mais j'obtiens les caractères de fin d'erreur:

function! MyFunction()
  if condition
    <C-W><C-W>
  else
    :some_other_command
  endif
endfunction

Il n'aime pas le <CW> <CW>

Que puis-je utiliser à la place?

Dave
la source

Réponses:

20

La réponse générale est d'utiliser la :normalcommande, comme

:exe "normal \<C-W>\<C-w>"

L' :executeapproche est le moyen lisible :normalde reconnaître les caractères spéciaux comme les combinaisons de touches de contrôle. L'autre approche est

:normal ^W^W

où chacun ^West un caractère inséré en tapant Ctrl-vCtrl-w.

jw013
la source
Si j'utilise ^Wdans un script, il s'ouvre en mode binaire. Comment éviter cela ou devrais-je préférer utiliser :exe?
DenisKolodin
0

Utilisez la fonction feedkeys . NOTEZ que ^ W n'est PAS "^" + "W" mais tapez en fait "Ctrl-V Ctrl-W". C'est un personnage spécial.

function! MyFunction()
  if condition
    call feedkeys("^W^W")  
  else
    :some_other_command
  endif
endfunction
xus
la source