Можно воспроизвести нажатия клавиш в vi
как макрос, если этого достаточно для ваших нужд. Это можно сделать двумя способами.
В обоих случаях я начну с аналогичным содержанием для vim
, а затем выделю для vi
.
Они захватываются и воспроизводятся в интерактивном режиме.
Напомним, что в vim
макрос создается путем записи серии нажатий клавиш в регистр в режиме записи (доступном из командного режима). Затем макрос выполняется, выполняя содержимое регистра.
qa # 1. Enter recording mode, will save to register "a.
ihello # Type key strokes to insert string "hello".
q # Return to command mode.
@a # 2. Execute contents of register "a (insert "hello").
@@ # 3. Repeat last macro execution (insert "hello").
Поскольку задается вопрос, эти шаги не будут использоваться в vim
, вместо этого вы должны использовать историю команд приложения.
В vi
шаг 1. выше выполняется по-другому: содержимое макроса должно быть напечатано в буфере в режиме вставки, а затем скопировано / скопировано / и т. Д. В регистр .
i # 1a. Enter insert mode.
ihello # Type key strokes to insert string "hello", escaping necessary keys.
# Return to command mode.
"aY # 1b. Yank entire line to register "a (macro text should appear on a line by itself).
@a # 2. Execute contents of register "a (insert "hello").
@@ # 3. Repeat last macro execution (insert "hello").
Их можно захватить в интерактивном режиме или в соответствующем файле * rc
.
При выполнении сопоставления оба vim
и vi
ждут 1 секунду (по умолчанию), чтобы принять все нажатия клавиш, составляющие отображаемое слово.
:cmap lhs rhs # Map rhs-words to lhs-word for command-mode mappings.
:imap lhs rhs # for insert-mode mappings.
:map! lhs rhs # for command- and insert-mode mappings.
:map lhs rhs # for normal-mode mappings.
:nmap lhs rhs # for strict normal-mode mappings.
# Escape necessary keys in lhs and rhs.
# lhs "#n" means function key "n"
# Use vim's extensive symbolic key names.
:vmap # Other variants
:xmap
:smap
:omap
:lmap
:unmap lhs # Remove map
:nunmap # Other variants
:vunmap
:xunmap
:sunmap
:ounmap
:unmap!
:iunmap
:lunmap
:cunmap
Запишите ключ q
и закройте редактор, используя символические имена ключей vim
.
:nmap q :wq # is typed as 4 chars, as 1.
:map lhs rhs # Map rhs-words to lhs-word for command-mode mappings.
:map! lhs rhs # for insert-mode mappings.
# Escape necessary keys in lhs and rhs.
# lhs "#n" means function key "n"
:unmap lhs # Remove map
Выполните запись клавиши q
и выйдите из редактора.
:map q :wq
vim
, например: здесь . vi
, например: этот PDF-файл .