Kullanmalısınız getpos()
:
Bir değişken içindeki konumunuzu kaydetmek için:
let save_pos = getpos(".")
getpos()
argüman olarak bir işaret alır, burada "."
imlecinizin geçerli konumunu temsil eder.
Ve geri yüklemek için:
call setpos('.', save_pos)
Burada ilk argüman imlecinizin mevcut pozisyonunun işaretini hareket ettireceğinizi (dolayısıyla mevcut pozisyonunuz) ve ikincisi işareti nereye koyacağınızı (daha önce kaydettiğiniz pozisyon) göstermektedir.
İşleviniz şöyle görünecektir:
function! DollarSplit()
let save_pos = getpos(".")
normal! 6|r$ " replaces the 6th caracter in line with a $
call setpos(".", save_pos)
endfunction
Daha fazla ayrıntı için bakınız: :h getpos()
ve:h setpos()
Kullanımınız hakkında daha fazla bilgi için execute
: bu işlev bir dize alır ve yürütür. Dizeniz yalnızca çift tırnak işaretleri veya değişkenlerin içerikleri arasında sabit kodlanmış karakterler olabilir.
Yazdığın zaman
execute col_number."|"
12. sütundaysanız, genişletilmiş dize olacaktır 12|
. Execute bu komutu yürütmeye çalışacaktır 12|
, ancak bir vimscript işlevi değil, normal mod komutu olduğu için çalışmaz.
Bir vimscript'den yürütmek için "normal modda yazmışım gibi çalıştır" demelisiniz, bunun için normal kullanılır.
Yani infaz olmadan şunu yazmış olursunuz:
normal 12|
Şimdi execute
çağrınızın çalışması için normal
anahtar kelimeyi genişletilmiş dizenize aşağıdaki gibi eklemeniz gerekir:
execute "normal " . col_number . "|"