Как я могу повторить любую команду в Vim, например, "C-x z" в emacs?
В Vim есть ли способ повторить последнюю команду независимо от того, было ли это редактирование или нет, и не предвидеть, чтобы сначала записать макрос?
например. скажем, я набираю :bn
и хочу сделать это снова (это был неправильный файл). Нажатие .
явно не делает этого. Или, может быть, я делаю gE
и хочу повторить это (с одним нажатием клавиши, так как четко gE
является болезненным типом).
Возможно, есть плагины? Подобно этому вопросу.
(Еще холоднее было бы ретроактивно связать несколько команд с макросом, поэтому можно было бы ввести [email protected]
или что-то повторить последние 5 команд...)
Ответы
Ответ 1
Чтобы повторить команду командной строки, попробуйте @:
, Чтобы повторить команду normal/insert-mode, попробуйте .
,
Добавьте ниже привязку к вашему .vimrc, если вы хотите использовать его: -
:noremap <C-P> @:<CR>
- Это отобразит Ctrl + P в предыдущую команду командной строки. Вы можете сопоставить любую другую комбо.
Ответ 2
:help repeating
предоставит типичные команды повтора (например., @: и т.д.). Вы можете попробовать repeat.vim. Это может приблизиться к тому, что вы ищете.
Ответ 3
Для команд движения нет механизма, встроенного в Vim. Команды Find и To (f
/f
/t
/t
) имеют ;
и ,
для повторения и повторения. Существует несколько плагинов, которые расширяют эти привязки для повторения других команд движения:
http://www.vim.org/scripts/script.php?script_id=2174
http://www.vim.org/scripts/script.php?script_id=3665
Позднее следует поддерживать повторение gE
с помощью ;
Ответ 4
Вы можете просто использовать "."
Пример:
У вас есть "abc" в 10 местах в вашем файле, и вы хотите заменить его "def" на 5 мест.
Шаг 1: найдите первое обнаружение abc, набрав команду "/abc"
Шаг 2: Когда курсор находится на "abc", замените abc командой "cw", чтобы вынуть слово "abc",
Шаг 3: Введите "def" в качестве замены и нажмите "Enter", чтобы перейти в режим команд
Шаг 4: Чтобы повторить это действие, просто введите команду "n", чтобы перейти к следующему вхождению abc и введите команду "." . Команда помнит, что вы в последний раз заменили "abc" на "def" и выполните то же самое здесь.
Ответ 5
Вы можете сопоставить @:
с некоторыми клавишами для удобства:
:map <F2> @:
а затем проще использовать его с повторами.