Vim-마지막 쉘 명령을 키에 매핑


10

bash로 보낸 마지막 명령을 반복하기 위해 leader-r을 매핑하는 방법이 있습니까?

예를 들어 C 파일로 작업 할 때 :! make 또는 gcc를 입력하지 않고 vim에서 프로그램을 컴파일하고 실행하고 싶습니다.

특정 명령을 키에 바인딩 할 수는 있지만 다른 유형의 파일에서는 작동하지 않습니다.

답변:


9

:!!명령은 마지막을 반복합니다 :!{cmd}. 그것은 훌륭한 ol ' vi 에서도 가능 합니다.


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의 답변을 찬성했습니다. 추가 한 고지 사항을 감안할 때 삭제가 약간 가혹한 것 같습니다. 누가이 기능을 유용하게 사용하는지 알 수 없습니다. 당신이 그것에 대해 너무 강하게 느끼면, 대신에 Ingo의 대답을 받아들이도록 요청하는 OP에게 의견을 남겨주세요. 그런 다음 여전히 원하는 경우 자신을 삭제할 수 있습니다.
terdon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.