Symbol Search - sourcegraph/zoekt

Zoekt is an open-source code search engine developed by Sourcegraph. It is designed to provide fast and accurate code search capabilities for large codebases. One of the key features of Zoekt is its symbol search functionality, which allows developers to search for specific code elements, such as functions, variables, and classes, across multiple repositories.

Capabilities and Advantages

Zoekt’s symbol search provides several advantages over traditional text-based search methods. It allows developers to:

  • Search for specific code elements, such as functions, variables, and classes, across multiple repositories.
  • Use regular expressions to search for specific patterns in code.
  • Narrow down search results by specifying the repository, file, or line number.
  • Quickly navigate to the definition of a symbol.

Search Options

Zoekt provides several options for searching code elements:

Go to Definition

The “Go to Definition” feature allows developers to quickly navigate to the definition of a symbol. This can be accessed by placing the cursor on the symbol and pressing ⌥F12 (Windows, Linux Ctrl+Shift+F10).

Search for Symbols

Zoekt allows developers to search for symbols in the current file or workspace. This can be done by using the @ command in Quick Open (⌘P (Windows, Linux Ctrl+P)) to search the current file, or the # command to search the current workspace.

Search for Symbols in the Workspace

To search for a symbol in the current workspace, press ⌘T (Windows, Linux Ctrl+T), then enter the name of the symbol. A list of potential matches will appear as before. If you choose a match that was found in a file that’s not already open, the file will be opened before navigating to the match’s location.

Search for Symbols in Current File

To search for a symbol in the current file, press ⇧⌘O (Windows, Linux Ctrl+Shift+O), then enter the name of the symbol you’re looking for. A list of potential matches will appear and be filtered as you type. Choose from the list of matches to navigate to its location.

Examples

Here are some examples of how to use Zoekt’s symbol search:

Search for a Function

To search for a function named foo in the current file, press ⇧⌘O (Windows, Linux Ctrl+Shift+O), then enter foo. A list of potential matches will appear and be filtered as you type. Choose from the list of matches to navigate to its location.

Search for a Class

To search for a class named Bar in the current workspace, press ⌘T (Windows, Linux Ctrl+T), then enter Bar. A list of potential matches will appear as before. If you choose a match that was found in a file that’s not already open, the file will be opened before navigating to the match’s location.

Go to Definition

To go to the definition of a function named foo, place your cursor on the function name and then press ⌥F12 (Windows, Linux Ctrl+Shift+F10). The editor will navigate to the definition of the function.

Documentation

For more information on Zoekt’s symbol search, please refer to the following documentation:

Conclusion

Zoekt’s symbol search provides fast and accurate code search capabilities for large codebases. It allows developers to search for specific code elements, such as functions, variables, and classes, across multiple repositories. With its regular expression support and ability to narrow down search results, Zoekt’s symbol search is a powerful tool for any developer.