bash로 보낸 마지막 명령을 반복하기 위해 leader-r을 매핑하는 방법이 있습니까?
예를 들어 C 파일로 작업 할 때 :! make 또는 gcc를 입력하지 않고 vim에서 프로그램을 컴파일하고 실행하고 싶습니다.
특정 명령을 키에 바인딩 할 수는 있지만 다른 유형의 파일에서는 작동하지 않습니다.
답변
:!!
명령은 마지막을 반복합니다 :!{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>