Похоже, что сценарии vims python предназначены для редактирования буфера и файлов, а не для работы с регистрами vims. Вы можете использовать некоторые команды vim packages, чтобы получить доступ к регистрам, но это не очень красиво.
Мое решение для создания функции vim с использованием python, использующего регистр
это что-то вроде этого.
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("'","''") ) )