Vim - карта останньої команди оболонки на ключ


10

Чи є спосіб відобразити лідер-r для повторення останньої команди, відправленої на bash?

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

Я знаю, що можу прив’язати до ключа певну команду, але вона не працюватиме для інших типів файлів.

Відповіді:



1

Редагувати: Відповідь Інго Каркат набагато краща. ... Я б видалив цю публікацію, якщо її не було прийнято (це означає, що я не можу).

Ось одне рішення. Він шукає лише останні 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>

Я б краще не видаляв це, оскільки, якщо це зробити, це не залишить питання без відповіді. Я підтримав відповідь Інго, який зараз має більше голосів, ніж ваш. З огляду на відмову, яку ви додали, видалення здається дещо суворим. Ніколи не знаєш, хто може вважати це корисним. Якщо ви так сильно ставитесь до цього, залиште коментар до ОП із проханням прийняти відповідь Інго. Потім, якщо ви все ще бажаєте, можете видалити своє.
тердон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.