Puede usar el pydo
comando disponible desde Vim 7.4, el manual describe cómo funciona mejor de lo que podría:
: [rango] pydo {cuerpo}
Ejecute la función de Python "def _vim_pydo (line, linenr): {body}" para cada línea en el [rango], con los argumentos de la función establecidos en el texto de cada línea, sin un <EOL> final, y el actual número de línea. La función debe devolver una cadena o Ninguno. Si se devuelve una cadena, se convierte en el texto de la línea en el turno actual. El valor predeterminado para [rango] es el archivo completo: "1, $".
Para su ejemplo, puede usar un comando como:
:python import vim
:pydo vim.current.buffer[linenr - 1] = '[%s]' % line
El linenr - 1
bit está ahí porque las líneas vim.current.buffer
están indexadas en 0 pero Vim comienza a contar líneas desde 1.
Lo bueno es que puedes definir fácilmente un comando personalizado para ejecutar tu código Python en un rango de líneas:
command! -range=% BracketLines
\ <line1>,<line2>pydo vim.current.buffer[linenr - 1] = '[%s]' % line
Puede obtener el búfer actual con
vim.current.buffer
, que es iterable; puede usar use unfor
bucle para obtener cada línea.Puede cambiar las líneas asignándolas; así que, juntando eso, obtenemos
También vea
:help python-buffer
.fuente