VIM Executando um comando de chave em uma função

13

Eu tenho uma função e quero executar um comando de chave, mas recebo o erro Caracteres finais:

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

Não gosta do <CW> <CW>

O que posso usar em vez disso?

Dave
fonte

Respostas:

20

A resposta geral é usar o :normalcomando, como

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

A :executeabordagem é a maneira legível :normalde reconhecer caracteres especiais, como combinações de teclas de controle. A outra abordagem é

:normal ^W^W

onde cada ^Wum é um caractere inserido digitando Ctrl-vCtrl-w.

jw013
fonte
Se eu usar ^Wem um script, ele será aberto no modo binário. Como evitar isso ou devo preferir usar :exe?
DenisKolodin
0

Use a função de teclas de feed . Observe que ^ W NÃO é "^" + "W", mas digite "Ctrl-V Ctrl-W". É um personagem especial.

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