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

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

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

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

2 Solutions collect form web for “Vim – отображает последнюю команду оболочки на ключ”

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

  • В чем разница между vi и vim?
  • Замена в VIM с неизменной регулярной выраженной частью
  • Переключить VI, чтобы использовать клавишу backspace вместо Control + H для backspace?
  • Как найти изменения в файле последней модификации?
  • Как добавить строку во многие файлы
  • Как изменить слово, которое нужно склонить в vim?
  • Установка псевдонима, когда двойные кавычки и одинарные кавычки оба терпят неудачу
  • vim поиск имени подстрочной переменной с помощью *
  • vim spell checker?
  • Получение Alt для работы в терминале с помощью Tmux и Vim
  • Обратные глобальные и локальные метки в vi / vim
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.