Еще один трюк с Vim - это важная функция, которую многие не используют. Он не требует никаких плагинов, и вы, возможно, даже использовали его случайно! Читайте дальше.
Окно последних команд vim
Вы когда-нибудь пытались выйти из Vim с помощью q: только для того, чтобы появилось небольшое окно, показывающее вам последние несколько введенных вами команд? Вы случайно открыли окно командной строки Vim. Это произошло потому, что окно командной строки открывается с помощью q:, и вы допустили распространенную ошибку транспозиции. Помимо быстрого просмотра вашей истории, это окно на самом деле обладает некоторыми полезными функциями.
Vim автоматически сохраняет историю ваших команд, и по умолчанию в нем будут сохранены только последние 20 команд. Я бы рекомендовал увеличить этот лимит до 100 или 1000 или другого аналогичного, более полезного числа. Это просто выполнить с помощью одной строки в вашем .vimrc:
set history=10000
Эта история сохраняется во всех ваших сеансах Vim, поэтому она работает во всех проектах, каталогах и репозиториях, облегчая поиск ваших команд.
Вы можете заметить, что когда вы открываете окно командной строки Vim, оно показывает число рядом с каждой записью в вашей истории. В последней строке находится следующее число без команды рядом с ним. Например, если у меня есть 1623 записи в моей истории, вот что я вижу:
1623 Git push
1624
В этом и заключается магия этого уникального буфера. Вы можете ввести команду в этой последней строке, и когда вы нажмете <Ввод>, команда будет выполнена. Поскольку это окно является обычным буфером Vim, у вас есть все инструменты, перемещения, текстовые объекты, автозаполнение, плагины и многое другое, которые доступны вам везде в Vim. Для ввода сложных команд эта область может оказаться бесценной. Вместо утомительного повторяющегося ввода запустите q: и используйте все свое мастерство Vim, чтобы создать эту идеальную команду.
И это еще не все: вы можете редактировать не только эту последнюю пустую строку. Вы можете вернуться к любой предыдущей строке и изменить ее. Когда вы нажмете <Ввод>, измененная команда будет выполнена, добавлена в вашу историю, и окно командной строки закроется.
С учетом всего сказанного, если вы действительно открыли окно командной строки по ошибке с помощью q: его довольно легко закрыть: :q.
Посмотрите демонстрационный скринкаст ниже, где я показываю это в действии. Сначала я открываю окно командной строки Vim с помощью q:, затем ищу в истории команду Git rebase с помощью /rebase и нажимаю <Enter>, чтобы перейти к этой строке. Затем я увеличиваю количество шагов, которые я хочу перебазировать обратно, с помощью 3< ctrl-a>, увеличивая число на 3. Я нажимаю <Ввод>, чтобы выполнить команду.