Ответ 1
В vim макросы просто хранятся в registers
. Вы можете вспомнить содержимое любого регистра и выполнить его как макрос (это то, что делает @
). Чтобы просмотреть список ваших регистров, используйте :reg
.
Я знаю, что есть способ отображать сопоставления через :map
(или :imap
, :cmap
и т.д.), но я не могу найти способ перечислить макросы, которые я сохранил в моем файле vimrc (as в let @a = 'blahblah'
).
Есть ли способ сделать это без необходимости ручного поиска внутри него (через :split [myvimrcfile]
или любым способом)?
Кроме того, если это возможно, есть ли способ привязать какую-то документацию, которая будет отображаться с макросом, чтобы объяснить, для чего она предназначена? У меня есть горстка, которую я использую совсем немного, но около 6 недель. Было бы неплохо просто перечислить их вместе с комментарием, который подскажет мне, что делает макрос (или даже просто имя, поэтому я уверен, что правильно использую).
Спасибо
В vim макросы просто хранятся в registers
. Вы можете вспомнить содержимое любого регистра и выполнить его как макрос (это то, что делает @
). Чтобы просмотреть список ваших регистров, используйте :reg
.
Вы можете просмотреть содержимое всех регистров, используя
:reg
команды. Или строка аргумента, подобная этой
:reg ahx
покажет вам содержимое регистров a, h и x.
Таким образом, вы можете хотя бы увидеть, какая последовательность команд будет запущена, и, надеюсь, это будет достаточно ясно, чтобы вы могли рассказать друг другу.
Регистры просто содержат текст. Вы можете вставить последовательность команд в виде текста или скопировать текст в регистр, а затем запустить его как команду, в зависимости от того, как вы обращаетесь к регистру.
Я не нашел прямого способа редактировать содержимое регистра, но вы можете вставить его в файл, отредактировать его и сохранить в тот же регистр.
IHTH.
Как /u/jheddings написано, макросы хранятся в виде регистров и что подсчет является присвоением кода регистру (обычно это делается в файлах vimrc с let @a=blahblah
Чтобы облегчить отображение макросов, определенных в файле vimrc (в моем случае это путь ~/.vimrc), вы можете использовать эту функцию vim:
function! ShowMacros()
10new
exe 'r!' . 'grep -B 1 -E "^\s*let @" ~/.vimrc'
call cursor(1,1)
endfunction
Что он делает:
10new - откройте новое окно vim с размером десяти строк
exe... - выполнить команду и поместить в окно
call... - перейти к первому столбцу первой строки
Вы можете выполнить эту функцию, опрокинув в нормальном режиме
:call ShowMacros
Вы также можете создать сопоставление клавиш или команду, чтобы закрепить способ вызова функции:
:cnoremap sm call ShowMacros()<CR>
command! sm call ShowMacros()
Это является исходным сообщением, в котором я написал функцию, аналогичную описанной выше.