Vim-将最后一个Shell命令映射到密钥


10

有什么方法可以映射leader-r重复发送给bash的最后一条命令?

例如,当使用C文件时,我想从vim编译并运行程序,而无需键入:!make或gcc。

我知道我可以将特定命令绑定到密钥,但不适用于其他类型的文件。

Answers:



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的答案,该答案现在的投票数比您多。考虑到您添加的免责声明,删除似乎有些苛刻。您永远不知道谁会觉得这很有用。如果您对此有如此强烈的感觉,请在OP上发表评论,要求他们接受Ingo的回答。然后,如果您仍然愿意,可以删除您的。
terdon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.