I'd suggest going with LazyVIM / SpaceVIM as a starting point, though, as configuring vim from blank state is an art itself and requires quite some time and dedication.