Vim - แม็พคำสั่งเชลล์สุดท้ายกับคีย์


10

มีวิธีการแมปผู้นำ -R เพื่อทำซ้ำคำสั่งสุดท้ายที่ส่งไปทุบตี?

ตัวอย่างเช่นเมื่อทำงานกับไฟล์ C ฉันต้องการรวบรวมและเรียกใช้โปรแกรมจากกลุ่มโดยไม่ต้องพิมพ์:! make หรือ gcc

ฉันรู้ว่าฉันสามารถผูกคำสั่งเฉพาะกับคีย์ แต่มันจะไม่ทำงานกับไฟล์ประเภทอื่น

คำตอบ:



1

แก้ไข: คำตอบของ Ingo Karkatดีกว่ามาก ... ฉันจะลบโพสต์นี้ถ้ามันไม่ได้รับการยอมรับ (ซึ่งหมายความว่าฉันไม่สามารถ)

นี่คือทางออกหนึ่ง มันค้นหาเฉพาะ 100 คำสั่งล่าสุดเท่านั้นคุณสามารถเปลี่ยนจำนวนนี้ได้ (การทำดัชนีประวัติเริ่มต้นที่ -1 ซึ่งเป็นคำสั่งสุดท้ายที่คุณพิมพ์ดังนั้นยิ่งตัวเลขต่ำลง

fun! LastCommand()
        let l:i = -1
        while l:i > -100
                let l:cmd = histget("cmd", l:i)
                if strpart(l:cmd, 0, 1) == "!"
                        let l:i = 1
                        execute l:cmd
                        break
                endif
                let l:i -= 1
        endwhile

        if l:i < 1 | echoerr "No command found" | endif
endfun
nnoremap <Leader>r :call LastCommand()<CR>

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