Кажется, то, что я хотел, на самом деле невозможно, поскольку Vim автоматически удаляет пробелы и использует параметры конфигурации для отступа.
Я избегал этого, вставляя эти слова в мой vimrc:
:inoremap <CR> x<BS><CR>x<BS>
:inoremap <up> x<BS><up>
:inoremap <down> x<BS><down>
:nnoremap o ox<BS>
:nnoremap O Ox<BS>
Он просто помещает символ на место, а затем удаляет его, прежде чем я выйду из режима редактирования, поэтому Vim не удаляет пустую строку. Если это так, то это может быть просто Vim, проверяющая, было ли какое-либо редактирование строки, автоматическое отступление не учитывается. Может быть, когда-нибудь я проверю источник и покопаюсь.
Я также хотел использовать отступ предыдущей строки (поэтому я получал разные отступы для разных файлов и не должен каждый раз вмешиваться в настройки), но мне удалось пойти на компромисс и использовать прекрасный плагин Vim .