Come usare una variabile nell'espressione di un comando 'normale'?


13

Come si può usare una variabile quando si esegue qualcosa tramite normal!in vimscript?

Esempio:

function! MyFunction(someArg)
   normal! (a:someArg)l
endfunction

Questo dovrebbe spostare i someArgpassi del cursore verso destra.


4
devi usareexe "norm!" variable
Christian Brabandt il

Risposte:


21

La executefunzione accetta una stringa come argomento, espande la stringa ed esegue un normale comando ex. Quindi puoi fare:

function! MyFunction(someArg) 
    execute "normal! ". a:someArg. "l" 
endfunction

Il .è un operatore vimscript standard per le stringhe concatenate.

executepuò essere abbreviato in exe.

Vedere :h :execute


EDIT Aggiungerò un punto sul commento di @Christian Brabandt sulla concatenazione con a ..

Il documento dice:

Vengono concatenati più argomenti, con uno spazio in mezzo. Per evitare lo spazio extra utilizzare il "." operatore per concatenare le stringhe in un argomento.

Quindi il comando potrebbe essere:

execute "normal!" a:someArg . "l"

Il comando eseguito sarà:

normal! 2l

8
non hai bisogno del '.'. exe concatenerà le stringhe con uno spazio senza di essa.
Christian Brabandt,

1
@ChristianBrabandt Aspettare sul serio? Non lo sapevo.
Tumbler41,

@ChristianBrabandt Non lo sapevo grazie!
statox
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.