Birinci dinamik değeri "start"
ve "end"
atayabilirsiniz nasıl
function! myvimscript()
let startline = line("'<")
let endline = line("'>")
python << endpython
start = vim.eval("startline")
end = vim.eval("endline")
cb = vim.current.buffer
l = cb[start:end]
endpython
endfunction
2), büyük harf ile başlayarak işlev adı tanımlar mısınız.
İki sorunuz için bir örnek. üç satır, 3,4,5 seçilmiş Görsel ve :call TestPy()
vardı çıktı:
function! TestPy() range
let startline = line("'<")
let endline = line("'>")
echo "vim-start:".startline . " vim-endline:".endline
python << EOF
import vim
s = "I was set in python"
vim.command("let sInVim = '%s'"% s)
start = vim.eval("startline")
end = vim.eval("endline")
print "start, end in python:%s,%s"% (start, end)
EOF
echo sInVim
endfunction
ilk ben küçük testin çıktısını yapıştırın: Ben yardımcı olur umarım
vim-start:3 vim-endline:5
start, end in python:3,5
I was set in python
Bu yüzden çıktıyı biraz açıklarım, aşağıdaki açıklamaları anlamak için örnek işlev kodlarını biraz okumalısınız. Bu işlev için range
ekledim. çünkü, eğer yoksa, görsel olarak seçilen her satır için, vim işlevinizi bir kez çağırır. Benim örneğimde, işlev 3 kez (3,4,5) yürütülecek. aralıklı, görsel seçim bir dizi olarak ele alacaktır. Bu örnek için yeterlidir. Gerçek işleviniz başka bir şey yapacaksa, range
'u kaldırabilirsiniz.
range
ile ile daha iyi. Kodlarınızla aynı kaldığı için line("'<")
'u kullandım. Liste değişkenle
DÜZENLEME:
onay bu işlevi: eğer arama
function! TestPy2()
python << EOF
import vim
s = range(10)
vim.command("let sInVim = %s"% s)
EOF
echo type(sInVim)
echo sInVim
endfunction
, çıkışı:
3
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
"3" tipi listesi (anlamına gelir kontrol tipi() işlevi). ve aşağıda bir satır liste dize gösterimi.
bu bir bash komut dosyasından çalışan bir python betiğidir? –
@TallPaul, Bir vimscript içinde çalışan pythonscript (ve vimrc'de bir harita ile çağrılır) – Reman
İlgili: [Python ve Vimscript'deki bir işlevden döndürülen değeri nasıl alabilirim?] (Http://stackoverflow.com/q/ 16.756.613). – glts