Vim – отображает последнюю команду оболочки на ключ

Есть ли способ сопоставить лидер-r, чтобы повторить последнюю команду, отправленную в bash?

Например, при работе с файлами C я хотел бы скомпилировать и запустить программу из vim без ввода:! Make или gcc.

Я знаю, что могу привязать определенную команду к ключу, но он не будет работать для других типов файлов.

Изменить: ответ 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> 

The :!! команда повторяет последнее :!{cmd} . Это даже доступно в почтенном ol vi .