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.


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.