VIM Ausführen eines Tastenbefehls in einer Funktion

13

Ich habe eine Funktion und möchte einen Tastaturbefehl ausführen, erhalte jedoch den Fehler Nachgestellte Zeichen:

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

Es mag das <CW> <CW> nicht

Was kann ich stattdessen verwenden?

Dave
quelle

Antworten:

20

Die allgemeine Antwort lautet: Verwenden Sie den :normalBefehl like

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

Der :executeAnsatz ist die lesbare Methode, um :normalSonderzeichen wie Tastenkombinationen zu erkennen. Der andere Ansatz ist

:normal ^W^W

Dabei steht jedes ^Wfür ein Zeichen, das durch Eingabe eingefügt wird Ctrl-vCtrl-w.

jw013
quelle
Wenn ich ^Win einem Skript benutze, wird es im Binärmodus geöffnet. Wie vermeide ich das oder sollte ich es vorziehen zu verwenden :exe?
DenisKolodin
0

Verwenden Sie die Funktion feedkeys . HINWEIS: ^ W ist NICHT "^" + "W", sondern "Strg-V Strg-W". Es ist ein besonderer Charakter.

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