Чтож, это муторно было, но всё-таки я сделал, что ты просил. Вот эта команда. Она сохраняет нетолько сам "главмакрос", но также расшифровывает и "приклеивает" все макросы используемые в "главмакросе" и их содержимое к общей "команде-активатору". Она расшифровывает все входящие в "главмакрос" "подмакросы". Однако следует учитывать, что в случае случайно записанного в макрос "пустого" макроса или внаписания в макрос текста со знаком "@" успешно будет сохранён только сам "главмакрос".
По функционалу: просто запиши "главмакрос" или обычный макрос в регистр "m" и нажми @x и получишь готовы "главмакрос" и ЕГО дочерние макросы в виде готовой "команды-активатора" сгенерированной ввид текста на экране. ВНИМАНИЕ: при первом вводе этой команды требуется нажать @v для активации. Только однажды, дальше всё работает без дополнительных манипуляций. Также добавил обычное сохранение макроса из регистра "m". Просто нажми @s и сгенерируется "команда-активатор".
При вводе сгенерированной команды выводит на экран сообщение об активированных регистрах.
Данная команда использует регистры: почти
весь нижний ряд букв: z,x,c,v,b. а также y и g для буферных операций, вот она:
:let@x=":enew!\<cr>:silent!\<cr>ggO\<esc>\"mp:g/^$/d\<cr>:silent! :s/\\(^\\|\\(@[a-z]\\)\\@<=\\).\\{-}\\($\\|@[a-z]\\)\\@=//g\<cr>^i#99#\<esc>:s/@[a-z]/\\r&/g\<esc>\<esc>:silent! :s/@[a-z]/\\r&/g\<cr>?#99#\<cr>:silent! :g/^$/d\<cr>?#99#\<cr>jkjkA\<cr>@m\<esc>jkj:let i=1 | g/@/s//\\= i.'@'/ | let i=i+1\<cr>\<esc>v\"yy\<c-v>?#\<cr>hhhdi#\<esc>jl\<esc>Go\<esc>?#99#\<cr>jl\<esc>:silent!:sort u\<cr>:silent!:g/^$/d \<cr>jl:normal \<c-r>y@b\<cr>\<esc>:silent!:s%/^.$//g \<cr>:silent!:g/^$/d\<cr>@zkj?#99#\<cr>jl:norm \<c-r>y@c\<cr>kj?#99#\<cr>j:normal \<c-r>yJ\<cr>^v$\"*y"| :let@v="Go\<esc>\"zp^:silent!:s/###/6Z#87/g\<cr>^v$\"zy^v$d\"cp^:silent!:s/###/6Z#87/g\<cr>^v$\"cy^v$d"| :let@z=":silent! :%s/\\\\/###\\\\\\\\/g\<cr>\<esc>:silent! :%s/\"/###\\\\\"/g\<cr>\<esc>:silent! :%s/\<c-v>\<c-v>/###\\\\\\<c-v>/g\<cr>\<esc>:silent! :%s/\<c-v>\<c-r>/###\\\\\\<c-r>/g\<cr>\<esc>:silent! :%s/\<c-v>\<cr>/###\\\\\\<cr>/g\<cr>:silent! :%s/\<c-v>\<esc>/###\\\\\\<esc>/g\<cr>\<esc>:silent! :%s/[^[:print:]]kb/###\\\\\\<bs>/g\<cr>\<esc>:silent! :%s/\\%ufd//g\<cr>\<esc>^:silent! :%s/[\\x80\\x80]//g\<cr>\<esc>:silent!\<cr>"| :let@c="Jdli=\"\<esc>v\"gyhhv\"gy^i:let@r=\"Go\\<esc>\\\"\<esc>\"gplip:silent!:s/###//g\\<cr>O\\<esc>\\<cr>^v$\\\"\<esc>\"gpliyi Now reg. \\\"\<esc>\"gpli\\\" (Macros @\<esc>\"gpli) contains:\\<esc>\"|:let\<esc>$a\"|:exe \"normal\"@r|\<esc>j\<esc>"| :let@b=":silent!\<cr>v\"gy:put \<c-r>g\<cr>a\<esc>:silent! :exe 'norm m' | s/^$//eg | norm g`
\<cr>:silent!\<cr>jl"|:let@s="O\<esc>\"mp:normal @z\<cr>\<esc>:silent!:s/6Z#87//g\<cr>i:let@g=\"\<esc>$a\"\<esc>^v$\"*y"