Ви можете використовувати pydo
команду, доступну з Vim 7.4, інструкція описує, як вона працює краще, ніж я могла:
: [діапазон] pydo {body}
Виконайте функцію Python "def _vim_pydo (рядок, linenr): {body}" для кожного рядка в [діапазоні], при цьому аргументи функції встановлюються на текст кожного рядка по черзі, без відмітки <EOL>, та поточного номер рядка Функція повинна повертати рядок або None. Якщо рядок буде повернуто, він стає текстом рядка в поточній черзі. За замовчуванням для [range] є весь файл: "1, $".
Для вашого прикладу ви можете використовувати команду типу:
:python import vim
:pydo vim.current.buffer[linenr - 1] = '[%s]' % line
linenr - 1
Біт існує тому , що лінії в vim.current.buffer
0-індексовані , але Вім починають вважати рядки від 1.
Приємно те, що ви можете легко визначити власну команду для виконання вашого коду Python у діапазоні рядків:
command! -range=% BracketLines
\ <line1>,<line2>pydo vim.current.buffer[linenr - 1] = '[%s]' % line