Как отформатировать файл Java в Vim, как Eclipse - PullRequest
6 голосов
/ 28 ноября 2011

Я использую Vim для редактирования файла Java, но я нахожу способ, которым Vim форматирует файлы Java, сильно отличается от Eclipse.

Если я выберу следующий код и нажму = , Vim неотформатировать код так, как я хотел бы.Кто-нибудь может мне помочь?

До Формат:

  case RINGTONE_PICKED: {
                            Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
                            handleRingtonePicked(pickedUri);
                            break;
                        }
    case PHOTO_PICKED_WITH_DATA: {

        if (mPhotoEditorView != null) {
            final Bitmap photo = data.getParcelableExtra("data");
            mPhotoEditorView.setPhotoBitmap(photo);
        } else {
            // The contact that requested the photo is no longer present.
            // TODO: Show error message
        }

        break;
    }

После Формат:

  case RINGTONE_PICKED: {
                            Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
                            handleRingtonePicked(pickedUri);
                            break;
                        }
  case PHOTO_PICKED_WITH_DATA: {

                                   if (mPhotoEditorView != null) {
                                       final Bitmap photo = data.getParcelableExtra("data");
                                       mPhotoEditorView.setPhotoBitmap(photo);
                                   } else {
                                       // The contact that requested the photo is no longer present.
                                       // TODO: Show error message
                                   }

                                   break;
                               }

Это то, что я хочу:

    case RINGTONE_PICKED: {
        Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
        handleRingtonePicked(pickedUri);
        break;
        }
    case PHOTO_PICKED_WITH_DATA: {

        if (mPhotoEditorView != null) {
            final Bitmap photo = data.getParcelableExtra("data");
            mPhotoEditorView.setPhotoBitmap(photo);
        } else {
            // The contact that requested the photo is no longer present.
            // TODO: Show error message
        }

        break;
    }

1 Ответ

4 голосов
/ 22 января 2012

Отступ в VIM (и в любом другом редакторе или IDE) выполняется по правилам отступа, закодированным кем-либо. Нет никакой гарантии, что любые две системы будут следовать одной и той же практике отступов, поскольку существуют разные методы отступов.

Я также использую VIM для незначительного редактирования файлов Java, и я не знаю ни одного распространенного альтернативного скрипта отступа для Java, кроме того, который включен в официальный дистрибутив. Если вы знакомы со сценариями VIM, вы можете попробовать отредактировать сценарий отступа в соответствии со своими потребностями. Он находится на $VIMRUNTIME/indent/java.vim.

Кстати, ваш пример немного необычен. Использование фигурных скобок для случаев оператора switch не требуется. Я предполагаю, что сценарии отступов VIM блокируют блоки, учитывая тип блока, и путаются с такими необычными блоками. Netbeans также немного запутался в этом примере, он разумным образом выравнивает блоки case, но закрывающая фигурная скобка оператора switch полностью не выровнена. Такое странное поведение не будет столь распространенным при использовании отступов VIM по умолчанию. На самом деле, если вы удалите фигурные скобки из операторов case, отступ VIM выровняет эти операторы достаточно хорошо.

...