Подтвердить что ты не робот

Есть ли способ отобразить список макросов, похожий на отображение ваших сопоставлений в Vim?

Я знаю, что есть способ отображать сопоставления через :map (или :imap, :cmap и т.д.), но я не могу найти способ перечислить макросы, которые я сохранил в моем файле vimrc (as в let @a = 'blahblah').

Есть ли способ сделать это без необходимости ручного поиска внутри него (через :split [myvimrcfile] или любым способом)?

Кроме того, если это возможно, есть ли способ привязать какую-то документацию, которая будет отображаться с макросом, чтобы объяснить, для чего она предназначена? У меня есть горстка, которую я использую совсем немного, но около 6 недель. Было бы неплохо просто перечислить их вместе с комментарием, который подскажет мне, что делает макрос (или даже просто имя, поэтому я уверен, что правильно использую).

Спасибо

4b9b3361

Ответ 1

В vim макросы просто хранятся в registers. Вы можете вспомнить содержимое любого регистра и выполнить его как макрос (это то, что делает @). Чтобы просмотреть список ваших регистров, используйте :reg.

Ответ 2

Вы можете просмотреть содержимое всех регистров, используя

:reg

команды. Или строка аргумента, подобная этой

:reg ahx

покажет вам содержимое регистров a, h и x.

Таким образом, вы можете хотя бы увидеть, какая последовательность команд будет запущена, и, надеюсь, это будет достаточно ясно, чтобы вы могли рассказать друг другу.

Регистры просто содержат текст. Вы можете вставить последовательность команд в виде текста или скопировать текст в регистр, а затем запустить его как команду, в зависимости от того, как вы обращаетесь к регистру.

Я не нашел прямого способа редактировать содержимое регистра, но вы можете вставить его в файл, отредактировать его и сохранить в тот же регистр.

IHTH.

Ответ 3

Как /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()

Это является исходным сообщением, в котором я написал функцию, аналогичную описанной выше.