VIM Ejecutando un comando de teclado en una función

13

Tengo una función y quiero ejecutar un comando de teclado, pero aparece el error Caracteres finales:

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

No le gusta el <CW> <CW>

¿Qué puedo usar en su lugar?

Dave
fuente

Respuestas:

20

La respuesta general es usar el :normalcomando, como

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

El :executeenfoque es la forma legible de llegar :normala reconocer caracteres especiales como combinaciones de teclas de control. El otro enfoque es

:normal ^W^W

donde cada ^Wuno es un carácter insertado escribiendo Ctrl-vCtrl-w.

jw013
fuente
Si uso ^Wen un script que se abre en modo binario. ¿Cómo evitar eso o debería preferir usar :exe?
DenisKolodin
0

Utilice la función de teclas de alimentación . TEN EN CUENTA que ^ W NO es "^" + "W" sino que en realidad escribe "Ctrl-V Ctrl-W". Es un personaje especial.

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