คุณควรใช้getpos()
:
หากต้องการบันทึกตำแหน่งในตัวแปรให้ทำดังนี้
let save_pos = getpos(".")
getpos()
ใช้เป็นอาร์กิวเมนต์เครื่องหมายที่นี่"."
แสดงถึงตำแหน่งปัจจุบันของเคอร์เซอร์ของคุณ
และเพื่อเรียกคืน:
call setpos('.', save_pos)
นี่คืออาร์กิวเมนต์แรกระบุว่าคุณจะย้ายเครื่องหมายตำแหน่งปัจจุบันของเคอร์เซอร์ของคุณ (ดังนั้นตำแหน่งปัจจุบันของคุณ) และตำแหน่งที่สองคือใส่เครื่องหมาย (ตำแหน่งที่คุณบันทึกไว้ก่อนหน้า)
ฟังก์ชั่นของคุณจะเป็นดังนี้:
function! DollarSplit()
let save_pos = getpos(".")
normal! 6|r$ " replaces the 6th caracter in line with a $
call setpos(".", save_pos)
endfunction
สำหรับรายละเอียดเพิ่มเติมดู: :h getpos()
และ:h setpos()
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการใช้งานของคุณexecute
: ฟังก์ชันนี้จะใช้สตริงและดำเนินการ สตริงของคุณสามารถเป็นอักขระแบบฮาร์ดโค้ดได้ระหว่างเครื่องหมายคำพูดคู่หรือเนื้อหาของตัวแปร
เมื่อคุณเขียน
execute col_number."|"
ถ้าคุณอยู่ในคอลัมน์ที่ 12 12|
สตริงจะขยายตัว ดำเนินการจะพยายามดำเนินการคำสั่งนี้ แต่จะไม่ทำงานเพราะ12|
ไม่ใช่ฟังก์ชั่น vimscript แต่คำสั่งโหมดปกติ
ในการดำเนินการจาก vimscript คุณต้องพูดว่า "ดำเนินการราวกับว่าฉันได้พิมพ์ในโหมดปกติ" นั่นเป็นสิ่งที่ปกติใช้
ดังนั้นโดยไม่ต้องดำเนินการคุณจะได้เขียน:
normal 12|
ตอนนี้เพื่อให้การexecute
โทรของคุณใช้งานได้คุณต้องเพิ่มnormal
คำหลักลงในสตริงส่วนขยายของคุณเช่นนี้:
execute "normal " . col_number . "|"