如何在Eclipse中格式化Vim中的Java文件

Fra*_*eng 6 eclipse ide vim editor

我正在使用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;
    }
Run Code Online (Sandbox Code Playgroud)

格式化后:

  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;
                               }
Run Code Online (Sandbox Code Playgroud)

这就是我要的:

    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;
    }
Run Code Online (Sandbox Code Playgroud)

inf*_*tor 5

VIM(以及任何其他编辑器或 IDE)中的缩进是由某人编码的缩进规则进行的。无法保证任何两个系统都会遵循相同的缩进实践,因为周围存在不同的缩进实践。

我还使用 VIM 来对 Java 文件进行少量编辑,除了官方发行版中包含的脚本之外,我不知道还有任何常见的替代 Java 缩进脚本。如果您熟悉 VIM 脚本,您可以尝试根据需要编辑缩进脚本。它位于$VIMRUNTIME/indent/java.vim.

顺便说一句,你的例子有点不常见。对于 switch 语句的情况,不需要使用花括号。我猜想 VIM 缩进脚本会考虑块类型来缩进块,并且会与这种不常见的块混淆。Netbeans 也对这个例子有点困惑,它以合理的方式对齐 case 块,但 switch 语句的右大括号完全不对齐。这种奇怪的行为在默认的 VIM 缩进中不会那么常见。实际上,如果你删除 case 语句的大括号,VIM 缩进可以很好地对齐语句。