I'm trying to write a script to take a bunch of vim sources in plugins and combine them into a single vimrc that I'm going to treat as an essentially opaque binary file. I'm doing this partially to simplify the process of deploying my vimrc to a new machine and partially to get more familiar with the ins and outs of vimscript/viml.To start, I'm taking an old plugin https://github.com/kana/vim-arpeggio, extracting all the non-test .vim files and concatenating them with my ordinary .vimrc.When I do that though, I see a bunch of error messages this:E746: Function name does not match script file name: arpeggio#_map_or_listThe file is defined in bundle/autoload/arpeggio.vim as follows:140:function! arpeggio#_map_or_list(modes, remap_p, q_args)  {{{2I had assumed that the arpeggio# was just another form of namespacing in vim, but it seems there's more to the story.Does it have any intrinsic relation to literal name of a file? Is it possible to trick vim into not performing this check?
How to fake a script file name inside a monolithic vimrc?
vimscript
That's an autoload function. They are used to allow functions to be loaded only when required (when they are called), so that they don't impact Vim's startup time, and for packaging of functions into libraries.From :help autoloadUsing a script in the autoload directory is simpler, but requires using  exactly the right file name.  A function that can be autoloaded has a name  like this:   :call filename#funcname()When such a function is called, and it is not defined yet, Vim will search the  autoload directories in 'runtimepath' for a script file called  filename.vim.  For example ~/.vim/autoload/filename.vim.See also :help 41.15.If you want to move these functions into your .vimrc (losing the autoload benefits), you can simply rename them not to contain the # character, (and to start with an upper case letter), but I completely agree with Luc Hermitte that it's not a good idea to do so.