【问题标题】:SublimeText 3, how to navigate between files in projectSublime Text 3,如何在项目中的文件之间导航
【发布时间】:2013-09-19 05:50:33
【问题描述】:

我是 SublimeText 的新手(从 TextMate 迁移而来),它很棒。 但我熟悉 JetBrains IDE,我需要在项目中快速打开文件/类的功能。 SublimeText 提供了很酷的功能,比如在任何地方打开符号、转到任何东西等等,但我找不到任何东西可以打开项目中的文件。 当我在做一个大项目时——去任何东西和类似的东西都不适合我。

例如,我有一个名为 Data 的类。当我尝试使用“转到项目中的任何内容/符号”打开该类时,列表中有很多变量和方法,因为“数据”在编程中是很常见的词。

因此,我正在尝试实现仅打开类/文件的功能,而不在其中进行搜索(例如 JetBrains Navigate -> Class)。是否有任何内置功能,或者我需要根据需要编写自定义插件?

【问题讨论】:

  • 您是否尝试过用于 Windows/Linux 的 ctrl+p 或用于 OS X 的 cmd+p?这应该只显示项目中的文件,而不是符号。这是 GoTo 任何功能,所以我不太确定,但它应该可以满足您的需求。与 IDE 不同,ST 不仅仅查看文件名。如果那是您想要的,您可能需要编写/查找插件。但是,您仍然需要一些方法来区分具有相同名称的不同文件(这可能类似于 goto anything 功能)。
  • 不幸的是没有,至少在 sublimetext3 中它绑定到动作“去任何地方”。
  • 由于您似乎想要为文件列表生成一些语言感知生成,因此您需要编写/查找插件。不过,如果它利用快速面板,仍将使用模糊匹配算法。虽然取决于您在面板中的信息结构,但它可能只查看文件名。

标签: sublimetext sublimetext3


【解决方案1】:

我将以下内容放在一起,以便您对可以做的事情有所了解。它可能对您来说足够好,如果没有,也许您可​​以以此为基础。这将抓取每个文件,因此您可能需要添加某种忽略模式。如果我记得,JetBrains 就是这样工作的。对于一个快捷方式,它会搜索所有内容,对于另一个,只是类(索引良好的文件可能更准确)

import sublime_plugin
import os

class FileNameBasedOpen(sublime_plugin.WindowCommand):
    def run(self):
        self.input_content = []
        for folder in self.window.folders():
            for root, dirs, files in os.walk(folder):
                for f in files:
                    self.input_content.append([f, root])

        self.window.show_quick_panel(self.input_content, self.on_select)

    def on_select(self, index):
        if index == -1:
            return
        else:
            f = os.path.join(self.input_content[index][1], self.input_content[index][0])
            self.window.open_file(f)

【讨论】:

  • 好的,谢谢,伙计。我想我们可以在这里停下来:当我回到我的电脑时,我会检查它。只是认为可能有更好的内置功能。再次感谢!
【解决方案2】:

刚刚想通了。 CMD + T,类似TextMate。

【讨论】:

  • 仅供参考,cmd+tcmd+p 做同样的事情(除非您或您安装的插件之一更改了它)。您可以通过在 ST 控制台中输入 sublime.log_commands(True) 来验证这一点。
猜你喜欢
  • 2014-11-13
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
相关资源
最近更新 更多