Отступ в VIM (и в любом другом редакторе или IDE) выполняется по правилам отступа, закодированным кем-либо. Нет никакой гарантии, что любые две системы будут следовать одной и той же практике отступов, поскольку существуют разные методы отступов.
Я также использую VIM для незначительного редактирования файлов Java, и я не знаю ни одного распространенного альтернативного скрипта отступа для Java, кроме того, который включен в официальный дистрибутив. Если вы знакомы со сценариями VIM, вы можете попробовать отредактировать сценарий отступа в соответствии со своими потребностями. Он находится на $VIMRUNTIME/indent/java.vim
.
Кстати, ваш пример немного необычен. Использование фигурных скобок для случаев оператора switch не требуется. Я предполагаю, что сценарии отступов VIM блокируют блоки, учитывая тип блока, и путаются с такими необычными блоками. Netbeans также немного запутался в этом примере, он разумным образом выравнивает блоки case, но закрывающая фигурная скобка оператора switch полностью не выровнена. Такое странное поведение не будет столь распространенным при использовании отступов VIM по умолчанию. На самом деле, если вы удалите фигурные скобки из операторов case, отступ VIM выровняет эти операторы достаточно хорошо.