Anda dapat menggunakan pydo
perintah yang tersedia sejak Vim 7.4, manual yang menjelaskan cara kerjanya lebih baik daripada yang saya bisa:
: [range] pydo {body}
Jalankan fungsi Python "def _vim_pydo (line, linenr): {body}" untuk setiap baris dalam [range], dengan argumen fungsi diset ke teks dari setiap baris secara bergantian, tanpa <EOL> tertinggal, dan arus nomor baris. Fungsi harus mengembalikan string atau Tidak Ada. Jika string dikembalikan, itu menjadi teks dari baris pada giliran saat ini. Default untuk [range] adalah seluruh file: "1, $".
Sebagai contoh Anda, Anda dapat menggunakan perintah seperti:
:python import vim
:pydo vim.current.buffer[linenr - 1] = '[%s]' % line
The linenr - 1
bit ada karena garis di vim.current.buffer
adalah 0-diindeks tapi Vim mulai menghitung garis dari 1.
Yang menyenangkan adalah Anda dapat dengan mudah mendefinisikan perintah khusus untuk mengeksekusi kode Python Anda pada berbagai baris:
command! -range=% BracketLines
\ <line1>,<line2>pydo vim.current.buffer[linenr - 1] = '[%s]' % line
Anda bisa mendapatkan buffer saat ini
vim.current.buffer
, yang merupakan iterable; Anda dapat menggunakanfor
perulangan untuk mendapatkan setiap baris.Anda dapat mengubah garis dengan menetapkannya; jadi dengan menggabungkan itu, kita mendapatkan:
Lihat juga
:help python-buffer
.sumber