.NET Tools
Essential productivity kit for .NET and game developers
ReSharper 2017.2 – what’s new in navigation?
ReSharper has always had a rich search and navigation system for finding files, classes, methods and even text. With the release of ReSharper Ultimate 2017.2, we’ve made a number of improvements to navigation: better search and matching, exact search, integrated Go to Text and a new way to navigate to files nearby.
All of these additions make it even easier to find what we’re looking for in our solution. Let’s dive in!
Navigation and search recap
ReSharper’s navigation features help us navigate to types, type members, files, text, contextual actions, … These navigations are all powered by a search engine that supports simple searches (including misspellings), as well as:
- Partial search terms
e.g. a search forper
will matchPerson
- CamelHumps
e.g. a search forive
will matchIViewEngine
- Navigation combos
e.g. a search forAccountService Create
orAS C
will match theCreate
method inAccountService
, a search forAccountService 25
orAS 25
will matchAccountService
line 25 - Filters
e.g. a search with/t
will search for types,/m
will search for members,/mm
will search for methods,/ff
will search for a project folder, … (hint: type/
in Go to Everything (Ctrl+T) to get a list of all filters)Note that Go to Text (Ctrl+T,T,T), has a few more – e.g. using/cp
will search in the current project,/ext
will search in files with a specific extension,/fm
will search in files with a specific file mask
Navigation and search improvements
ReSharper 2017.2 includes some updates to how search results are matched. When using navigations such as Go to Everything (Ctrl+T), Go to File Member (Alt+\) or Go to Action (Alt+Enter), ReSharper will now match elements containing words in the target query in any order. For example, a search for ValidUser
will also match UserValid
:
Too free-format? Want to be more specific in searching within a codebase? No problem. We also introduced exact search. Much like with an Internet search engine, we can add quotes around a search query. Something like "Person"
will return Person
but never PersonRepository
, AddPerson()
, etc.
It’s possible to combine exact search with wildcard characters like *
and ?
, so we can search for "Person*"
to find Person
and PersonRepository
, but not AddPerson()
:
Another addition to search is finding extension methods. Using the TypeName.ExtensionMethod
syntax (with a .
separator), we can find extension methods on a given type:
Exploring search results
A number of changes went into exploring search results. One such change is that Go to Text is now integrated in Go to Everything (Ctrl+T). If there’s no type, file or symbol that corresponds to our search term, ReSharper will search for text. This means that we can search for any text in our solution and navigate to, for example, a Markdown file or an application setting based on a simple text search.
When search yields a large number of results, it may be useful to explore them in the Find Results window. For any search, we can now hit a laptop-friendly Shift+Enter shortcut to open search results in a separate tool window where we can explore and filter items more easily. (The older + shortcut to flush search results is still available as well.)
Navigate to File Nearby
We can perform contextual navigation using the Navigate To menu (Alt+Backquote). For example from a derived type, we can navigate up to the base class. Or from an interface, we can navigate to implementation. We now added a new option: Navigate to File Nearby.
Navigate to File Nearby displays project structure around our current file: the solution and project is shown, we can see folders and files that are in the same directory as our current file, and easily jump to these or create a new element at a certain location:
Download ReSharper Ultimate 2017.2! We’d love to hear your feedback on these navigation improvements.