Parece que vims python sripting está diseñado para editar el búfer y los archivos en lugar de funcionar muy bien con los registros vims. Puede usar algunos de los comandos de paquetes vim para obtener acceso a los registros, pero no es bonito.Puede acceder a los registros de las funciones de python en vim
Mi solución para crear una función vim usando python que usa un registro es algo como esto.
function printUnnamedRegister()
python <<EOF
print vim.eval('@@')
EOF
endfunction
registros ajuste también puede ser posible usar algo como
function setUnnamedRegsiter()
python <<EOF
s = "Some \"crazy\" string\nwith interesting characters"
vim.command('let @@="%s"' % myescapefn(s))
EOF
endfunction
Sin embargo esto se siente un poco engorroso y no estoy seguro de lo que debería ser myescapefn. Así que nunca he podido obtener la versión de configuración para que funcione correctamente.
Así que si hay una manera de hacer algo más como
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
O incluso una versión nueva de myescapefn que podría utilizar entonces que sería muy práctico.
ACTUALIZACIÓN:
Sobre la base de la solución por ZYX estoy usando esta pieza de pitón
def setRegister(reg, value):
vim.command("let @%s='%s'" % (reg, value.replace("'","''")))
'python >> EOF' resulta con errores de sintaxis. ¿Tal vez usas 'python << EOF'? – ZyX
Y olvidaste 'endfunction'. – ZyX
Thx ZyX. Corregido ahora. –