vim: ไลบรารีของการแทนที่ทั่วไปโดยไม่มีปลั๊กอิน?


1

ฉันจะต้องการที่จะดำเนินการคิดเช่น:'<,'>s/^\ \ \ \ //ในรูปแบบย่อเช่น:'<,'>s_lw(ไม่ว่าสิ่งที่จริงจะเป็นไปได้ว่าs_lw) โดยใช้vimฟังก์ชันการทำงานที่ฐานแรกพยายามที่จะไม่พึ่งพาในส่วนขยายเช่นCommandAlias: Make ชื่อแทนคำสั่งที่เป็นกลุ่ม

เป็นไปได้ไหม?

คำตอบ:


2

คุณสามารถใช้ตัวย่อของโหมดบรรทัดคำสั่งเพื่อ:

:cnoreab s_lw s/^\ \ \ \ //

ข้อดีของการใช้อักษรย่อบนการแมป ( :cnoremap) คือคุณยังสามารถพิมพ์สิ่งนี้ (เช่นในการค้นหา) โดยไม่ขยายออกไปโดยไม่ได้ตั้งใจ


หมายเหตุสำหรับผู้อ่าน: @:สามารถใช้สำหรับการทำซ้ำการกระทำ
จอห์น

1

<ตัวอย่างที่คุณให้อาจจะทำได้ด้วย

อย่างไรก็ตามคุณสามารถใช้คำสั่งที่กำหนดเองได้:

" remove 4 leading spaces on the current line or a range
command! -range=% SLW execute <line1> . ',' . <line2> . 's/^ \{4}//'

" usage 1:
    foo
:SLW<CR>
foo

" usage 2:
    foo
    bar
vj
:'<,'>SLW<CR>
foo
bar

" usage 3:
    foo
    bar
:,+SLW<CR>
foo
bar

การแมปโหมดภาพ:

xnoremap ,slw :s/^ \{4}//<CR>

หรือการแมปโหมด commandline:

cnoremap slw s/^ \{4}//

หรือตัวย่อโหมด commandline เหมือนในคำตอบของ Ingo

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.