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

10
01.07.2014, 02:32
2 ответа
[113383]Команда [113671]:![113672] повторяет последнюю [113673]:!{cmd}[113674]. Она даже доступна в маститых [113675]vi[113676].[113384].
9
27.01.2020, 20:02

Править: Ответ 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>
1
27.01.2020, 20:02
  • 1
    я не удалил бы это с тех пор, если я делаю, который оставит вопрос оставшимся без ответа. У меня есть ответ upvoted Ingo, который теперь имеет больше голосов, чем Ваш. Учитывая правовую оговорку Вы добавили, удаление кажется немного резким. Вы никогда не знаете, кто мог бы найти это полезным. Если Вы чувствуете так сильно об этом, оставляете комментарий OP просьбой, чтобы они приняли ответ Ingo вместо этого. Затем если Вы все еще хотите, можно удалить Ваш. –  terdon♦ 11.03.2015, 00:50

Теги

Похожие вопросы