【问题标题】:Eclipse: how to hide custom files in Project ExplorerEclipse:如何在 Project Explorer 中隐藏自定义文件
【发布时间】:2011-09-02 12:43:53
【问题描述】:

我在 CDT 中有一个自定义构建器,它将很多文件添加到项目目录中。我希望从 Project Explorer 中过滤掉这些文件,但无法弄清楚如何(文件掩码为 *.ooj)。

是否可以通过文件掩码将自定义过滤器添加到自定义视图中?或者也许有另一种方法可以在 Project Explorer 中隐藏文件?

【问题讨论】:

    标签: eclipse eclipse-cdt


    【解决方案1】:

    以下是在 Eclipse Indigo/Luna/Neon 上的操作方法(截至 2018-05-22):

    • 打开“项目属性”
      • 下拉菜单 --> 项目 --> 属性
      • 将出现一个名为“属性”的新对话窗口
    • 创建“资源过滤器”
      • 选择资源 --> 资源过滤器 -> 添加过滤器...
      • 将出现一个名为“为项目添加资源过滤器”的新对话窗口
      • 在新对话框中选择以下
        • 过滤器类型:全部排除
        • 适用于:文件
        • 确保选中“所有子级(递归)”复选框
        • 文件和文件夹属性
          • 选择:名称
          • 选择:匹配项
          • 填写:*.ooj
        • 点击确定
        • 对话框关闭
    • 应用新过滤器
      • 点击应用
      • 您应该会在“导航器”视图中看到变化
    • 关闭“项目属性”
      • 点击确定
    • 完成

    【讨论】:

    • 当我这样做时,我的文件夹会被隐藏,但它会立即再次出现。我能做什么?
    • 如果您想对所有项目执行此操作,您可以单击包资源管理器栏中的向下三角形(最小化图标旁边),然后从那里选择过滤器。然后只需将您的过滤器(您可以使用正则表达式)添加到顶部文本区域。
    • 不适用于 Indigo。似乎工作过一次。但现在没有了。
    【解决方案2】:

    您可以为此定义一个过滤器。在 Package Explorer 中打开视图菜单,然后选择“Filters...”,您可以在此处定义隐藏文件的模式。

    【讨论】:

    • 查看菜单没有Filters 选项。我需要单击自定义视图来访问Filters。但是只有预定义的过滤器,例如“存档文件”、“Java 文件”等,并且没有添加/编辑这些过滤器的选项
    • 您使用哪个 Eclipse 版本?
    • Eclipse 3.7(Indigo) 在他提到的菜单中有一个名为“Name filter patterns”的可自定义过滤器,但据我所知,Juno 已将其删除。也不知道为什么。
    • @rmflowless 较新的版本默认使用“项目资源管理器”。您需要该过滤器的“包资源管理器”。
    【解决方案3】:

    如何将全局用户定义资源过滤器添加到 Eclipse Project Explorer 视图:

    在项目级别修改和切换过滤器需要多次点击,如果您的工作区中有许多项目,可能会很乏味。如果您需要一次又一次地在所有项目上应用或切换相同的过滤器设置,您可能希望为所有项目和所有工作区提供更快的全局解决方案。

    • 修改plugins/org.eclipse.ui.navigator.resources_{version}.jar中的文件plugin.xmlplugin.properties(提取、修改并重新添加修改后的文件)。

    • 例如,将plugin.xml 中的仅文件过滤器添加到元素/plugin/extension @point="org.eclipse.ui.navigator.navigatorContent"

      <commonFilter id="org.eclipse.ui.navigator.resources.filters.{unique-id-a}" name="%filters.{unique-id-a}.name" description="%filters.{unique-id-a}.description" activeByDefault="true|false">
         <filterExpression>
            <and>
               <instanceof value="org.eclipse.core.resources.IFile"/>
               <test property="org.eclipse.core.resources.name" value="{file-wildcard-pattern-a}"/>
            </and>
         </filterExpression>
      </commonFilter>
      
    • 再举一个例子,将plugin.xml 中的文件和目录过滤器添加到同一个元素:

      <commonFilter id="org.eclipse.ui.navigator.resources.filters.{unique-id-b}" name="%filters.{unique-id-b}.name" description="%filters.{unique-id-b}.description" activeByDefault="true|false">
         <filterExpression>
            <and>
               <adapt type="org.eclipse.core.resources.IResource">
                  <test property="org.eclipse.core.resources.name" value="{file-wildcard-pattern-b}"/>
               </adapt>
            </and>
         </filterExpression>
      </commonFilter>
      
    • plugin.properties 中添加的所有过滤器提供过滤器名称和描述。 Project Explorer 视图中的过滤器显示顺序是按此过滤器名称排列的,与过滤器类型无关:

      filters.{unique-id-a}.name={file-wildcard-pattern-a} files
      filters.{unique-id-a}.description=Hides files that match "{file-wildcard-pattern-a}"
      
      filters.{unique-id-b}.name={file-wildcard-pattern-b} files and folders
      filters.{unique-id-b}.description=Hides files and folders that match "{file-wildcard-pattern-b}"
      
    • 重启 Eclipse 并重置其缓存:eclipse.exe -clean

    【讨论】:

    • 酷!正是我想要隐藏 *.orig 文件(来自 hg/git 合并):这有效:&lt;commonFilter id="org.eclipse.ui.navigator.resources.filters.origFiles" name="%filters.origFiles.name" description="%filters.origFiles.description" activeByDefault="false"&gt; &lt;filterExpression&gt; &lt;adapt type="org.eclipse.core.resources.IFile"&gt; &lt;test property="org.eclipse.core.resources.name" value="*.orig" /&gt; &lt;/adapt&gt; &lt;/filterExpression&gt; &lt;/commonFilter&gt; for plugin.xml 和 ...
    • ...(继续我之前的评论)filters.origFiles.name=*.orig resources filters.origFiles.description=Hides resources that end with ".orig", e.g. generated on versioning system merges (e.g. Mercurial/HG, GIT) plugins.properties。在eclipse -clean 之后,Eclipse Kepler 中的所有内容都可用:)
    • 带有 Remote Systems 插件(可能已经在您的 Eclipse 发行版中可用),这很容易设置,无需额外的应用程序(( un)packer, file navigator etc.): 1. 转到(或Window -> Show View -> Remote Systems),2. Local -> ... - > org.eclipse.ui.navigator.resources_.jar -> plugins.xml / plugins.properties -> 双击, 3. 在两个文件中编辑/插入所需内容, 4. 远程系统 -> ... -> plugins.xml / plugins.properties -> 右键 -> 同步缓存 :)
    【解决方案4】:

    首先感谢@emmzett 只是想以详细的方式解释 emmzett 的答案,因为我对编辑插件文件一无所知,我花了 2 个小时在这上面。也许我可以用这个明确的表达来节省你的时间。

    1. 首先进入eclipse文件然后 plugins->org.eclipse.ui.navigator.resources_(你的eclipse版本).jar
    2. 右键.jar文件,用winrar打开
    3. 找到plugin.xml 使用编辑器(记事本、Notepad++ 等)打开 plugin.xml文件
    4. 找到point="org.eclipse.ui.navigator.navigatorContent"并在下面粘贴代码
      <commonFilter id="org.eclipse.ui.navigator.resources.filters.SpecifyAnIdForYourFileType" 
                   name="%filters.SpecifyAnIdForYourFileType.name" 
                   description="%filters.SpecifyAnIdForYourFileType.description"
                   activeByDefault="true">
        <filterExpression>
            <and>
               <instanceof value="org.eclipse.core.resources.IFile"/>
               <test property="org.eclipse.core.resources.name" value="your specific file"/>
            </and>
         </filterExpression>
      </commonFilter>
    5. SpecifyAnIdForYourFileType 更改为id 的唯一名称 将 "your specific file" 更改为您的特定文件后缀,例如 *.pdfdesktop.ini 等。
    6. 保存plugin.xml并退出
    7. 找到plugin.properties用与3.step相同的编辑器打开 粘贴此代码
      filters.SpecifyAnIdForYourFileType.name=your specific file files
      filters.SpecifyAnIdForYourFileType.description=Hides files that match your specific file
    8. 保存plugin.properties并退出
    9. 重新启动 eclipse 并清除缓存而不是转到Project Explorer at 左侧
    10. 点击右上角的View Menu图标
    11. 点击Filters and Customization...
    12. Filters 菜单中勾选您的新过滤器。

    这就是我要再次感谢 emmzett 的全部内容。

    问候。

    【讨论】:

      猜你喜欢
      • 2015-01-19
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      • 2015-03-14
      相关资源
      最近更新 更多