Другой подход, если вы выполнили какие-то команды, - это восстановить историю команд, перенаправив ее в регистр.
:redir @h
:history
:redir END
:set paste
"hp
:redir @h ............. start redirecting output to register "h"
:history .............. outputs all commands history
:redir END ............ stops redirecting
:set paste ............ to avoid wrong indentation
"hp ................... puts the "h" register in the current position
вы можете контролировать, куда поместить ее, выполнив ...
0put h .............. pastes the `h` register at the line zero
Как только у вас есть серия команд в файле или регистре, вам будет проще создать такую функцию, как:
function! Helo()
echo "hello world"
endfunction
Если при каких-либо изменениях вы использовали макрос, допустим, q
, вы можете извлечь его или даже отредактировать, потому что макросы - это обычные регистры, которые вы можете переназначать по своему усмотрению.Например, в режиме вставки вы можете ввести:
Ctrl-r q .................... pastes register q
:let @q= ................... starts reassingning macro q
:let @q= ctrl-r q .......... pastes the q register on its reassignment
, установив регистр q в "hello vim"
:let @q = "ihello\<Return>vim\<Esc>"
OBS: используя двойные кавычки, вы можете использовать управляющие клавиши, как показано выше
Любая сложная команда может быть сохранена в буфер обмена
:let @+ = @: .............. places last command on the clipboard
:@+ ......................... uses clipboard as command