มีวิธีการแมปผู้นำ -R เพื่อทำซ้ำคำสั่งสุดท้ายที่ส่งไปทุบตี?
ตัวอย่างเช่นเมื่อทำงานกับไฟล์ C ฉันต้องการรวบรวมและเรียกใช้โปรแกรมจากกลุ่มโดยไม่ต้องพิมพ์:! make หรือ gcc
ฉันรู้ว่าฉันสามารถผูกคำสั่งเฉพาะกับคีย์ แต่มันจะไม่ทำงานกับไฟล์ประเภทอื่น
มีวิธีการแมปผู้นำ -R เพื่อทำซ้ำคำสั่งสุดท้ายที่ส่งไปทุบตี?
ตัวอย่างเช่นเมื่อทำงานกับไฟล์ C ฉันต้องการรวบรวมและเรียกใช้โปรแกรมจากกลุ่มโดยไม่ต้องพิมพ์:! make หรือ gcc
ฉันรู้ว่าฉันสามารถผูกคำสั่งเฉพาะกับคีย์ แต่มันจะไม่ทำงานกับไฟล์ประเภทอื่น
คำตอบ:
คำสั่งซ้ำสุดท้าย:!!
:!{cmd}
ก็จะยิ่งมีอยู่ใน OL เคารพ' vi
แก้ไข: คำตอบของ 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>