답변:
편집 : 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>