Sublime-键盘快捷键,转到“文件查找”的首选

时间:2018-09-06 18:26:34

标签: sublimetext3 sublimetext sublime-text-plugin

当我使用“在文件中查找”来搜索Sublime Text中的关键字时,总是必须用鼠标单击要在该文件中选择的内容。有什么办法可以使键盘跳起来吗?还是如果有插件可以做到这一点?

enter image description here

3 个答案:

答案 0 :(得分:2)

默认情况下,您可以使用Find > Find Results中的菜单项或其关联的键绑定(在菜单中可见)在查找操作的所有结果之间导航。这样做,结果按顺序向前或向后排列,如果有很多结果,则可能不希望如此。

除了通常的文件导航外,没有任何导航键可用于在文件输出的内部查找中跳转,但是您可以使用插件添加这样的导航键:

import sublime
import sublime_plugin

class JumpToFindMatchCommand(sublime_plugin.TextCommand):
    """
    In a find in files result, skip the cursor to the next or previous find
    match, based on the location of the first cursor in the view.
    """
    def run(self, edit, forward=True):
        # Find the location of all matches and specify the one to navigate to
        # if there aren't any in the location of travel.
        matches = self.view.find_by_selector("constant.numeric.line-number.match")
        fallback = matches[0] if forward else matches[-1]

        # Get the position of the first caret.
        cur = self.view.sel()[0].begin()

        # Navigate the found locations and focus the first one that comes
        # before or after the cursor location, if any.
        pick = lambda p: (cur < p.begin()) if forward else (cur > p.begin())
        for pos in matches if forward else reversed(matches):
            if pick(pos):
                return self.focus(pos)

        # not found; Focus the fallback location.
        self.focus(fallback)

    def focus(self, location):
            # Focus the found location in the window
            self.view.show(location, True)

            # Set the cursor to that location.
            self.view.sel().clear()
            self.view.sel().add(location.begin())

这实现了一个新命令jump_to_find_match,该命令采用一个可选参数forward来确定跳转是向前还是向后,并将视图基于以下内容集中在下一个或上一个查找结果上文件中第一个光标的光标位置,根据需要进行包装。

与该插件结合使用时,可以设置诸如以下的键绑定以使用该命令。在这里,我们使用 Tab Shift + Tab 键;每个中的context确保绑定仅在查找结果中有效。

{
    "keys": ["tab"],
    "command": "jump_to_find_match",
    "args": {
        "forward": true
    },
    "context": [
        { "key": "selector", "operator": "equal", "operand": "text.find-in-files", "match_all": true },
    ],
},

{
    "keys": ["shift+tab"],
    "command": "jump_to_find_match",
    "args": {
        "forward": false
    },
    "context": [
        { "key": "selector", "operator": "equal", "operand": "text.find-in-files", "match_all": true },
    ],
},

这将允许您在“查找”面板中的匹配项之间导航,但是仍然必须使用鼠标才能实际跳至相关文件中的匹配项。

要通过键盘执行此操作,可以使用this plugin,它实现了一个模拟光标位置处的双击的命令。只要光标位于查找匹配项上,则如下所示的键绑定将响应 Enter 键触发命令:

{
    "keys": ["enter"],
    "command": "double_click_at_caret",
    "context": [
        { "key": "selector", "operator": "equal", "operand": "text.find-in-files", "match_all": true },
    ],
},

答案 1 :(得分:0)

10-1是您要寻找的答案。 F4向后搜索。相应的Shift+F4next_result是默认键绑定的一部分。

prev_result

答案 2 :(得分:0)

尝试使用 Use buffer 按钮在新标签页中打开结果。