Найти тему
Блокнот математика

Рубрика "Секреты Вим". История команд

Всем привет! Про командную строку Вим, известную как ex или "команды с двоеточием", я уже рассказывал. В частности, стрелочки вверх и вниз позволяют переходить к выполненным командам, которые можно редактировать и выполнять повторно. То же относится и к поиску.

А есть особое окно, в котором находится история команд. Их там можно редактировать и выполнять. Редактировать можно все, а выполнить только одну; впрочем, символ | позволяет соединять команды в серии, так что...

Открыть окно можно разными способами. Например, q:

Важно: не спутайте с :q, что есть выход из Вим (закрытие окна или вкладки). Впрочем, если есть несохраненный текст, то ничего страшного не произойдет. А если нет, то тем более.

Можно открыть окно былых поисков: q? или q/

Вот внизу - это оно. Увеличено по высоте.
Вот внизу - это оно. Увеличено по высоте.

Нельзя все это сделать, если идет запись макроса. Тогда q остановит запись. Впрочем, зачем открывать историю команд во время записи макроса?

Еще нельзя открыть такое окно, если оно уже открыто.

Высота окна определяется переменной cmdwinheight (хотя оно может быть ниже, если не хватает места).

Это окно не является обычным окном: из него нельзя даже переключиться на другое окно или изменить ширину. Можно только закрыть и менять высоту. Зато в самом окне почти все можно делать, что и в обычном окне! Например, закрыть окно через :q или сохранить команды в файл.

Но главное, для чего все затеяно, это вот что: нажатие <CR> на строке выполняет ее как команду и закрывает окно. Если окно поиска, то выполняется поиск.

Все правки теряются! Вам просто дается возможность найти нужную команду или собрать таковую из ваших неудачных попыток.

Переменная history позволяет задать число сток истории (команд отдельно, поисков отдельно, и не только их отдельно), по умолчанию 50. А команда :history (или просто :his) выведет эту историю. Описанное выше окно удобнее: позволяет перемещаться, выполнить команду, редактировать, сохранять в файл...

Команда :history может принимать аргументы. Во-первых, это c или :, если вы хотите именно ex-команды, s или ? или /, если вы хотите поиск, e или =, если вы хотите историю выражений, a для всего вместе, и кое-что еще. Во-вторых, это номера, первый и последний, чтобы вывести часть истории. Числа могут быть положительные (абсолютный номер от начала) и отрицательные (относительный номер, с конца).

Команда keepp позволяет выполнить команду без занесения в историю. Ау, тайные агенты, хакеры и разведчики, частные детективы и ревнивые любовники! Это для вас.

Путеводитель по каналу

Оглавление рубрики