This plugin enhances the Find in Files feature of Sublime Text. It attaches to the result buffer automatically and adds the following features:
-
Make all lines in a find-in-files result buffer double-clickable. Bind
<enter>to do the same thing, namely go to that line. (But also set the column, well ... just set the complete selection.) -
Also, register the filenames as local symbols for quick navigation and outlines. Use
ctrl|super+r(Sublime's default) to open the symbols panel, or however you use that in your daily routine. (E.g. I have a global shortcut to jump from symbol to symbol.) -
Bind
,and.to go to the previous or next match staying in the result buffer. Just move the cursor ("navigate") around.But you can also bind
fif_addon_prev_matchandfif_addon_next_matchon your own. -
Bind
ctrl+enterto open a preview, side-by-side. The preview will update when you navigate around. Both,enterandctrl+enterwill close the preview. As there is no side-by-side to a results panel, this will only work for result buffers. Also, if you already use the newish "find_in_files_side_by_side" setting, there is no real difference as you already opted-in to always use a side-by-side view. (Hint: Turnfind_in_files_side_by_sideoff and use the preview feature here.) -
Bind
+and-to change the number of context lines. For ease of use, hit-repeatedly as a toggle between no context and your default, or if your default is no context between that and some context. -
Bind
f5to refresh the view, t.i. redo the last search. Hm, 🤔, maybe we can change that and redo the search the cursor is currently in. But for now it is the last search in the buffer. -
Bind
alt+c[3] to toggle case sensitivity,alt-wto toggle the whole word flag and redo the search immediately. -
Bind
alt+rto toggle regex mode. The pattern will be escaped/unescaped and the panel will open to edit the pattern further. -
If you reuse the result buffer (and it is a tab, not the panel thing at the bottom of the window), the tab moves with you so that closing the tab (aka
ctrl+w) brings you to the view where you initiated the search. -
Add the search summary (e.g. "2 matches across 2 files") to the search header line ("Searching 9 files for ...")
-
Re-bind
ctrl+shift+fto immediately do the search if you have exactly one selection. Exclude untitled buffers in that case. (You can turn this off by setting"leave_my_keys_alone.FindInFiles-addon": truein the user preferences.) Sets "whole_word" if you've selected a whole word, unsets it if that's not the case. Also normalizescase_sensitiveandregextofalse.
[1] On Mac, the standard super+alt modifier is used. Generally, these should
be just the standard bindings, you already use in the Find-panel to toggle the
switches.
Registering "local symbols" populates the Goto panel. I use it in combination with the InlineOutline plugin, which looks like so:
I personally like it when escape closes the results view. You can add that
to your own key bindings. E.g.
{
"keys": ["escape"],
"command": "fif_addon_goto_abort_search",
"context": [
{ "key": "selector", "operand": "text.find-in-files" },
// negate all default escape contexts, even if they're not likely to ever match
// adjust to your liking
{ "key": "auto_complete_visible", "operator": "not_equal" },
{ "key": "has_next_field", "operator": "not_equal" },
{ "key": "has_prev_field", "operator": "not_equal" },
{ "key": "num_selections", "operator": "equal", "operand": 1 },
{ "key": "overlay_visible", "operator": "not_equal" },
{ "key": "panel_has_focus", "operator": "not_equal" },
{ "key": "panel_visible", "operator": "not_equal" },
{ "key": "popup_visible", "operator": "not_equal" },
]
}
The command fif_addon_goto_abort_search basically is like close, just that it
also closes the preview if any is open.
