看來vims python sripting被設計爲編輯緩衝區和文件,而不是很好地與vims寄存器一起工作。你可以使用一些vim軟件包命令來訪問寄存器,但不是很漂亮。你能訪問vim中的Python函數的寄存器
我使用python創建一個vim函數的解決方案使用了一個寄存器 就像這樣。
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的我可以使用那將是非常方便的。
UPDATE:
基於由ZYX的解決方案,我用這片蟒蛇的
def setRegister(reg, value):
vim.command("let @%s='%s'" % (reg, value.replace("'","''")))
'蟒蛇>> EOF'導致語法錯誤。也許你使用'python << EOF'? – ZyX 2010-04-23 02:25:26
你忘了'endfunction'。 – ZyX 2010-04-23 02:27:25
Thx ZyX。現在修復。 – 2010-04-23 04:17:56