Vim - ánh xạ lệnh shell cuối cùng tới phím


10

Có cách nào để ánh xạ thủ lĩnh-r để lặp lại lệnh cuối cùng được gửi đến bash không?

Ví dụ: khi làm việc với các tệp C tôi muốn biên dịch và chạy chương trình từ vim mà không cần gõ :! Make hoặc gcc.

Tôi biết tôi có thể liên kết lệnh cụ thể với khóa nhưng nó sẽ không hoạt động đối với các loại tệp khác.

Câu trả lời:


9

Các :!!lệnh lặp lại cuối cùng :!{cmd}. Nó thậm chí còn có sẵn trong ol ' vi đáng kính .


1

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>

Tôi không muốn xóa cái này vì nếu tôi làm vậy, nó sẽ để lại một câu hỏi chưa được trả lời. Tôi đã đánh giá cao câu trả lời của Ingo hiện có nhiều phiếu hơn của bạn. Từ chối trách nhiệm mà bạn đã thêm, việc xóa có vẻ hơi khắc nghiệt. Bạn không bao giờ biết ai có thể tìm thấy điều này hữu ích. Nếu bạn cảm thấy rất mạnh về điều đó, hãy để lại bình luận cho OP yêu cầu họ chấp nhận câu trả lời của Ingo. Sau đó, nếu bạn vẫn muốn, bạn có thể xóa của bạn.
terdon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.