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ć?

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.