วิธีการใช้ตัวแปรในการแสดงออกของคำสั่ง 'ปกติ'?


13

เราจะใช้ตัวแปรอย่างไรเมื่อเรียกใช้บางสิ่งผ่านnormal!vimscript

ตัวอย่าง:

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

สิ่งนี้ควรเลื่อนsomeArgขั้นตอนเคอร์เซอร์ไปทางขวา


4
คุณต้องใช้exe "norm!" variable
Christian Brabandt

คำตอบ:


21

executeฟังก์ชั่นใช้เวลาสตริงเป็นอาร์กิวเมนต์ก็ขยายสตริงและรันมัน AA คำสั่งอดีตปกติ ดังนั้นคุณสามารถทำได้:

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

.เป็นผู้ประกอบการ vimscript มาตรฐานเพื่อสตริง concatenate

executeexeสามารถลงไป

ดู :h :execute


แก้ไขฉันจะเพิ่มจุดเกี่ยวกับความคิดเห็นของ @Christian Brabandt .เกี่ยวกับการเรียงต่อกันกับที่

หมอพูดว่า:

อาร์กิวเมนต์หลายตัวถูกต่อกันโดยมีช่องว่างระหว่าง เพื่อหลีกเลี่ยงพื้นที่พิเศษให้ใช้ "." โอเปอเรเตอร์เพื่อเชื่อมสตริงให้เป็นอาร์กิวเมนต์เดียว

ดังนั้นคำสั่งอาจเป็น:

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

คำสั่งที่ดำเนินการจะเป็น:

normal! 2l

8
คุณไม่ต้องการ '.' exe จะเชื่อมสตริงกับช่องว่างโดยไม่ต้อง
Christian Brabandt

1
@ChristianBrabandt รออย่างจริงจังเหรอ? ผมไม่ทราบว่า.
Tumbler41

@ChristianBrabandt ฉันไม่รู้เหมือนกันว่าต้องขอบคุณ!
statox
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.