VIM Esecuzione di un comando chiave in una funzione


13

Ho una funzione e voglio eseguire un comando chiave, ma ottengo l'errore Caratteri finali:

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

Non gli piace <CW> <CW>

Cosa posso usare invece?

Risposte:


20

La risposta generale è usare il :normalcomando, come

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

L' :executeapproccio è il modo leggibile per arrivare :normala riconoscere caratteri speciali come combinazioni di tasti di controllo. L'altro approccio è

:normal ^W^W

dove ognuno ^Wè un carattere inserito digitando Ctrl-vCtrl-w.


Se uso ^Win uno script di quello che si apre in modalità binaria. Come evitarlo o dovrei preferire l'uso :exe?
DenisKolodin,

0

Usa la funzione feedkeys . NOTA che ^ W NON è "^" + "W" ma in realtà digita "Ctrl-V Ctrl-W". È un personaggio speciale.

function! MyFunction()
  if condition
    call feedkeys("^W^W")  
  else
    :some_other_command
  endif
endfunction
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.