คุณสามารถใช้pydo
คำสั่งที่มีให้ตั้งแต่ Vim 7.4 คู่มืออธิบายวิธีการทำงานได้ดีกว่าที่ฉันทำได้:
: [ช่วง] pydo {body}
ใช้งานฟังก์ชั่น Python "def _vim_pydo (line, linenr): {body}" สำหรับแต่ละบรรทัดใน [range] โดยที่อาร์กิวเมนต์ของฟังก์ชันถูกตั้งค่าเป็นข้อความของแต่ละบรรทัดโดยไม่ต้องมี <EOL> และกระแส หมายเลขบรรทัด ฟังก์ชั่นควรกลับสตริงหรือไม่มี หากสตริงถูกส่งคืนมันจะกลายเป็นข้อความของบรรทัดในเทิร์นปัจจุบัน ค่าเริ่มต้นสำหรับ [ช่วง] คือไฟล์ทั้งหมด: "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