Vous pouvez utiliser la pydo
commande disponible depuis Vim 7.4, le manuel décrit comment cela fonctionne mieux que moi:
: [plage] pydo {corps}
Exécutez la fonction Python "def _vim_pydo (ligne, linge): {corps}" pour chaque ligne de la [plage], avec les arguments de fonction étant définis sur le texte de chaque ligne tour à tour, sans <EOL> final, et le courant numéro de ligne. La fonction doit renvoyer une chaîne ou None. Si une chaîne est renvoyée, elle devient le texte de la ligne du tour en cours. La valeur par défaut pour [plage] est le fichier entier: "1, $".
Pour votre exemple, vous pouvez utiliser une commande comme:
:python import vim
:pydo vim.current.buffer[linenr - 1] = '[%s]' % line
Le linenr - 1
bit est là parce que les lignes vim.current.buffer
sont indexées 0 mais Vim commence à compter les lignes à partir de 1.
La bonne chose est que vous pouvez facilement définir une commande personnalisée pour exécuter votre code Python sur une gamme de lignes:
command! -range=% BracketLines
\ <line1>,<line2>pydo vim.current.buffer[linenr - 1] = '[%s]' % line
Vous pouvez obtenir le tampon actuel avec
vim.current.buffer
, qui est un itérable; vous pouvez utiliser unefor
boucle pour obtenir chaque ligne.Vous pouvez modifier les lignes en leur affectant; donc en mettant cela ensemble, nous obtenons:
Voir aussi
:help python-buffer
.la source