If I am correct in thinking you are after a way to do the same thing, but to make it easier to do or to execute over and over?
This is exactly what custom commands are for, but yours is a little tricky to make into a single command. Instead we can build a command that chains to a function, and put the meat of the code in that function.
function HandleMultiReplace(...)
exe 'normal! "ayy'
for data in a:000
exe 'norm! "ap'
exe 's/world/' . data . '/'
endfor
endfunction
This function does exactly the same thing as your long line of code, but now it is parameterized with var args and is easy to call.
Don't get too hung up on a:000
- it is basically the list of all variable arguments that were passed into the function. It only works if we specify varargs (...) in the parameter list, as we've done here.
Next we will add a command that calls our new function:
command -nargs=* MultiReplace :call HandleMultiReplace( <f-args> )
To use the new command, put the above lines of code into your vimrc. Once you've done that, and have reloaded any vim windows that were open, you can just type the following and hit enter:
:MultiReplace 'a', 'b', 'c'
The nice thing is that with var args, we can pass a list of any size we want.
Now let's say you wanted to improve your function and make the first argument the part you want to search for (to replace). This can be done by changing only the function as follows:
function HandleMultiReplace(text, ...)
exe 'normal! "ayy'
for data in a:000
exe 'norm! "ap'
exe 's/' . a:text . '/' . data . '/'
endfor
endfunction
Now, when using your command, pass the replace text as the first parameter, and the list that follows it can still be as long as we want:
:MultiReplace 'world', 'a', 'b', 'c'