【问题标题】:How to format a Java file in Vim like Eclipse如何像 Eclipse 一样在 Vim 中格式化 Java 文件
【发布时间】:2011-11-28 03:04:24
【问题描述】:

我正在使用 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;
    }

【问题讨论】:

  • 您能否确认您已设置:syntax on:set syntax? 返回syntax=java,并且您的java.vim 目录中有一个java.vim 文件? (Java 缩进文件自 2005 年以来没有更新,所以任何最新版本都应该没问题。)
  • 我试过了,但不幸失败了。我认为可能有一个插件可以将格式方式更改为eclipse。
  • 能否请您澄清一下您所说的失败是什么意思?
  • 格式风格还是不像eclipse。
  • 其实我只是想在vim中实现eclipse中的ctrl+shift+F功能。

标签: eclipse vim ide editor


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。我也认为大括号会导致这个问题。并且在我将语法方法设置为语法之后,vim的自动缩进总是让我满意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
相关资源
最近更新 更多