VIM Wykonywanie polecenia klawisza w funkcji

13

Mam funkcję i chcę wykonać polecenie klawisza, ale pojawia się błąd Końcowe znaki:

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

Nie lubi <CW> <CW>

Czego mogę zamiast tego użyć?

Dave
źródło

Odpowiedzi:

20

Ogólną odpowiedzią jest użycie :normalpolecenia, takiego jak

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

:executePodejście jest czytelny sposób, aby :normalrozpoznać znaki specjalne, takie jak kombinacje sterowania kluczowych. Inne podejście to

:normal ^W^W

gdzie każdy ^Wto jeden znak wstawiany przez wpisanie Ctrl-vCtrl-w.

jw013
źródło
Jeśli użyję ^Wskryptu, otwiera się on w trybie binarnym. Jak tego uniknąć, czy powinienem raczej używać :exe?
DenisKolodin
0

Użyj funkcji feedkeys . Zauważ, że ^ W NIE jest „^” + „W”, ale w rzeczywistości wpisuje „Ctrl-V Ctrl-W”. To wyjątkowa postać.

function! MyFunction()
  if condition
    call feedkeys("^W^W")  
  else
    :some_other_command
  endif
endfunction
xus
źródło