में पाइथन फ़ंक्शंस से रजिस्टरों तक पहुंच सकते हैं ऐसा लगता है कि vims पायथन क्रिप्टिंग को vims रजिस्टरों के साथ अच्छी तरह से काम करने के बजाय बफर और फ़ाइलों को संपादित करने के लिए डिज़ाइन किया गया है। रजिस्टरों तक पहुंच प्राप्त करने के लिए आप कुछ विम पैकेज कमांड का उपयोग कर सकते हैं लेकिन यह सुंदर नहीं है।क्या आप विम
रजिस्टर का उपयोग करने वाले पायथन का उपयोग करके एक विम फ़ंक्शन बनाने का मेरा समाधान ऐसा कुछ है।
function printUnnamedRegister()
python <<EOF
print vim.eval('@@')
EOF
endfunction
स्थापना रजिस्टरों भी तरह
function setUnnamedRegsiter()
python <<EOF
s = "Some \"crazy\" string\nwith interesting characters"
vim.command('let @@="%s"' % myescapefn(s))
EOF
endfunction
कुछ का उपयोग कर हालांकि इस लगता है थोड़ा बोझिल संभव हो सकता है और मुझे यकीन है कि myescapefn वास्तव में क्या किया जाना चाहिए नहीं कर रहा हूँ। तो मैं कभी भी सेटिंग संस्करण को ठीक से काम करने में सक्षम नहीं रहा हूं।
तो अगर अधिक की तरह
function printUnnamedRegister()
python <<EOF
print vim.getRegister('@')
EOF
endfunction
function setUnnamedRegsiter()
python <<EOF
s = "Some \"crazy\" string\nwith interesting characters"
vim.setRegister('@',s)
EOF
endfunction
या मैं तो इस्तेमाल कर सकते हैं myescapefn का भी एक अच्छा संस्करण है कि बहुत आसान हो जाएगा कुछ करने के लिए एक तरह से नहीं है।
अद्यतन:
zyx द्वारा समाधान मैं अजगर के इस टुकड़े का उपयोग कर रहा के आधार पर
def setRegister(reg, value):
vim.command("let @%s='%s'" % (reg, value.replace("'","''")))
'अजगर >> EOF' सिंटेक्स त्रुटि में परिणाम है। शायद आप 'पायथन << EOF' का उपयोग करें? – ZyX
और आप 'एंडफंक्शन' के बारे में भूल गए। – ZyX
Thx ZyX। अब तय –