崇高的文本:如何跳转到使用键盘查找结果文件?

如果您在File > Find in Files... + + F,则会将您带到Find Results ,列出文件和突出显示的匹配项。 您可以双击文件名/path或匹配的行来打开右边的文件。

我想知道是否有一种方法可以通过键盘完成双击操作?

随着崇高伟大的文件切换function,我认为必须有办法让你的手在键盘上做Find in Files...

看来一个插件已经被创build来做到这一点。 快速浏览一下,插件中还有一些额外的function。 尽pipe下面我的原始答案会起作用,但是安装现有的插件会容易得多。

https://sublime.wbond.net/packages/BetterFindBuffer


可以使用插件。

 import sublime import sublime_plugin import re import os class FindInFilesGotoCommand(sublime_plugin.TextCommand): def run(self, edit): view = self.view if view.name() == "Find Results": line_no = self.get_line_no() file_name = self.get_file() if line_no is not None and file_name is not None: file_loc = "%s:%s" % (file_name, line_no) view.window().open_file(file_loc, sublime.ENCODED_POSITION) elif file_name is not None: view.window().open_file(file_name) def get_line_no(self): view = self.view if len(view.sel()) == 1: line_text = view.substr(view.line(view.sel()[0])) match = re.match(r"\s*(\d+).+", line_text) if match: return match.group(1) return None def get_file(self): view = self.view if len(view.sel()) == 1: line = view.line(view.sel()[0]) while line.begin() > 0: line_text = view.substr(line) match = re.match(r"(.+):$", line_text) if match: if os.path.exists(match.group(1)): return match.group(1) line = view.line(line.begin() - 1) return None 

使用find_in_files_goto命令设置键绑定。 这样做时要小心。 理想情况下,会有一些设置将此视图标识为“在文件中查找”视图,因此您可以将其用作上下文。 但我不知道一个。 当然,如果你find一个,请告诉我。

编辑将示例键绑定到答案的主体中。

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

尝试Shift + F4 (铝键盘上的Fn + Shift + F4 )。

SublimeText 3我不得不使用F4 (去当前的结果文件)和Shift +F4 (以前的结果)。

从默认的键盘映射…

 { "keys": ["super+shift+f"], "command": "show_panel", "args": {"panel": "find_in_files"} }, { "keys": ["f4"], "command": "next_result" }, { "keys": ["shift+f4"], "command": "prev_result" }, 

我希望这个post有帮助。

SP

命令“next_result”将执行此操作。 使用关于使用范围张贴的整齐的想法muhqu,你可以这样做,你可以按'enter'在你想要的行:

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

尝试Ctrl + P – 这个快速打开文件的名称在您的项目,键盘快捷键的完整列表,请参阅这里

通过执行带有"by": "words"参数的drag_select命令(在Default sublime-mousemap文件中可以看到),可以在Sublime Text中模拟双击。

但是,您需要假装鼠标是插入光标的位置。 以下插件将执行此操作:

 import sublime import sublime_plugin class DoubleClickAtCaretCommand(sublime_plugin.TextCommand): def run(self, edit, **kwargs): view = self.view window_offset = view.window_to_layout((0,0)) vectors = [] for sel in view.sel(): vector = view.text_to_layout(sel.begin()) vectors.append((vector[0] - window_offset[0], vector[1] - window_offset[1])) for idx, vector in enumerate(vectors): view.run_command('drag_select', { 'event': { 'button': 1, 'count': 2, 'x': vector[0], 'y': vector[1] }, 'by': 'words', 'additive': idx > 0 or kwargs.get('additive', False) }) 

要与键盘组合使用,例如:

 { "keys": ["alt+/"], "command": "double_click_at_caret" },