Bagaimana cara menggunakan variabel dalam ekspresi perintah 'normal'?

13

Bagaimana kita bisa menggunakan variabel saat mengeksekusi sesuatu melalui normal!vimscript?

Contoh:

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

Ini harus memindahkan someArglangkah kursor ke kanan.

statox
sumber
4
Anda perlu menggunakanexe "norm!" variable
Christian Brabandt

Jawaban:

21

The executefungsi mengambil string sebagai argumen, mengembang string dan jalankan aa biasa ex perintah. Dengan demikian Anda dapat melakukan:

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

Ini .adalah operator vimscript standar untuk menggabungkan string.

executedapat disingkat menjadi exe.

Lihat :h :execute


EDIT Saya akan menambahkan poin tentang komentar @Christian Brabandt tentang rangkaian dengan a ..

Doc mengatakan:

Berbagai argumen digabungkan, dengan ruang di antaranya. Untuk menghindari ruang ekstra gunakan "." operator untuk menyatukan string menjadi satu argumen.

Jadi perintahnya bisa:

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

Perintah yang dieksekusi adalah:

normal! 2l
statox
sumber
8
Anda tidak memerlukan '.' exe akan menyatukan string dengan spasi tanpa itu.
Christian Brabandt
1
@ChristianBrabandt Tunggu dengan serius? Saya tidak tahu hal itu.
Tumbler41
@ChristianBrabandt saya tidak tahu terima kasih itu!
statox