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?

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.