Chỉnh sửa: Câu trả lời của Ingo Karkat tốt hơn nhiều. ... Tôi sẽ xóa bài đăng này nếu nó không được chấp nhận (có nghĩa là tôi không thể).
Đây là một giải pháp. Nó chỉ tìm kiếm 100 lệnh cuối cùng, rõ ràng, bạn có thể thay đổi số này (Lập chỉ mục lịch sử bắt đầu từ -1, đây là lệnh cuối cùng bạn đã nhập, do đó, số càng thấp, càng được tìm kiếm nhiều hơn).
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>