Before analyzing how to initialize vim, I'll give you a brief description of mparm_T . The mparm_T is used for sharing several parameters with the main function and other functions for initializing. This struct reduces complexity of passing parameters. But it is just wrapper, not organized well, so comprehending it without prior knowledge is little hard. I'll explain the parameters in mparm_T one by one. 1. argc, argv These are copy of argc and argv of main function. The other parameters are initialized according to argv . 2. evim_mode Run with " -y " option or run by evim command, start as the easy vim. The easy vim always runs as gui mode and there is no normal mode. I don't know what it is exactly, becuase I've never used it. If you wonder, read the man page and " :help evim ". 3. use_vimrc This parameter is set by " -u " option. It can be NULL, "NONE", "NORC" and file name. The Vim skips both sys