Great little tool! One feature request though... could a space character be treated as a splitter for multiple search terms (ORed)? So "complex name" would find "mycomplexname.cpp", "mysimplename.cpp", "mycomplexandlongname.cpp", "anamethatiscomplexandlong.cpp" and "my complex name.cpp". It would help when I'm fishing for files in big projects by typing strings related to my general requirements.
That is a really good idea actually. Would you mind creating an issue on https://github.com/IPWright83/VSFileNav ? I've neglected this project for a little while (mainly because it just seems to carry on working) but I'm planning to give it a little bit of attention sometime. That sounds like a nice little feature that I'd certainly consider adding.
Fantastic! Beats all of the out-of-the-box alternatives. Please keep supporting this extension going forward! :-) Reviewed it here: http://blog.jonschneider.com/2015/11/vsfilenav-recommended-visual-studio.html
I'm glad you like it. I'm planning on modifying the extension in the Gallery sometime so it'll allow installations on future versions of Visual Studio rather than having to re-host versions in my Dropbox account. Then I can just link off to the old VS2010 version which requires a separate installer.
I'm also planning on moving the code to GitHub at some point, so I can get feature requests and allow people to help contribute. There are some features (e.g. Symbol searching) that I've tried several times to implement but never managed to do satisfactorily.
This is #1 extension I use almost all the time. However I've different behaviour in VS2010 and VS2013. In VS2010 I see nice window like on the top of this page.
In VS2013 however there is no window - when I hit Ctrl+, it shows small text field on the right top part of currently opened document. It still works if I start to type there, but still I would prefer to have whole window to show up. I'd better focus my attention on it.
Unfortunately I don't have a copy of VS2013 so I can't recompile it and upload it here. I've just made a modification to the manifest though which should allow it to work with all future versions from VS2010 onwards. Download the new version here: https://dl.dropboxusercontent.com/u/41796243/VSNav-2013.vsix
Nice idea, but it would be great if the find window where dockable, and if you could associate a keyboard shortcut and command to it. I had to find all xsd files in the whole solution and it was a pain to navigate each time to open the find files dialog and loosing the selected item.
I could make it dockable, I opted not to in the end because I value real estate for the other aspects of Visual Studio.
You can assign a keyboard shortcut to it (Edit.VSFileNav) is the command to search for, which means you can include toolbar shortcuts too. The dialog should also remember the previous selection and search terms when you pop it up again.
I was looking for this feature for a long time. It even becomes more powerful when attaching a hot-key to it (through tools|options|environment|keyboard). With a few enhancement (see suggestions) it will be an A+ extension.
Thanks for this extension. I've been looking for this feature which resembles TextMate on iMAC 'Command+T"). I have two suggestions (copied from TextMate):
- Double click on the file in the list opens it
- Expand the search to look in names even when the typed in characters are not contiguous in the file name. Example: I have two files calles "EditorExtension.cs" and "EditorFragments.xml". Suppose I want to look for one of them but remember only the first part of the file and know which extension I'm looking for. So, entering "editorxml" locates the second file, while "editor" finds both.
These are very useful feature for keyboard hooked developers who prefer using the keyboard to the mouse.
@katrash: I'll add double clicking to open to my list (have some scrolling issues to fix too when the datagrid doesn't have focus).
For your example, use "editor*xml" and it'll bring up the result you're after. I didn't want to add in anything like this by default, as if you have lots of similarly named files you can end up with too many results, it's better if the user explicitly says this is what they want by simply inserting a *.
The minor things that can improve user experience a lot:
* documentation - add information about Edit.VsFileNav command;
* interface - why buttons aren't consistent with current windows theme? I use the classic one;
* interface - save windows size on closing;
* interface - pagedn/pageup/home/end not working.
Sergey, Thanks for the suggestions. I wrote a bit on my block to introduce it a bit better http://wrightdev.wordpress.com/2012/05/30/visual-studio-file-navigation-extension. You're right about the other suggestions, I should try and incorporate some of those. I'm thinking of releasing it as open source at some point as I never have to update it.
I'm glad you find it useful. I don't actually have VS2012 installed on my main Dev machine so I'm not able to upgrade it at this time. It also isn't currently open source but I'd be happy to make it open source if someone else would be willing to upgrade it. Unfortunately I don't spend much time working on it, as I never managed to achieve my original goal with it (e.g. Symbol Searching in a perfomant way) so it feels like a little bit of a failed project, even though what it currently does it does quite well. I'll look at moving it to some open source hosting over the next few weeks if I can and posting a link up here.
Thanks for the extension!! I use this everyday and am loving it.
I have one suggestion.
I usually work with multiple vertical tab groups in VS2013. If the file I was looking for belongs to another tab group, the file becomes visible without getting focus. So I have to manually press Ctrl+Tab to edit the file. It would be great if the file gets auto-focused!
Hello, very nice extension. I have one issue though: When I type "ac" to search for a file named ActivityFactory.cs, the dialog simply closes the instant I type the "c". This only happens in a certain solution (with around 20 projects, thousands of files). In another solution, where the ActivityFactory.cs file is also present, it works fine. Is there any way to debug this?
AlexanderMDk that sounds really strange - I've never seen anything like that before. The source is publically available at https://bitbucket.org/IPWright83/vsfilenav . You are welcome to compile and debug through if you'd like to try and isolate it. You'll need the Visual Studio SDK to build it, but should work from there.
This is almost what I was looking for, except...
Typing wildcards is a nuisance if all you want is the matches to contain "hel" and "dia". The Visual Assist "Open File In Solution" Dialog lets you type "hel dia" and get the equivalent of this extensions "*hel*dia". Doesn't sound like much of a hassle, but it adds up in daily work.
Hi IPWright83, I found that bug AlexanderMDk mentioned.
It's in the StringMatch.cs file and public StringMatch(String fullString, String matchString) function.
Here you have this code:
int startIndex = fullString.ToLower().IndexOf(matchString.ToLower());
this.Parts.Add(new StringPart(fullString.Substring(startIndex, length), true));
But IndexOf can return -1 to startIndex and Substring(-1, length) is ArgumentOtOfRange exception.
And its probably bug int the C# IndexOf(string) implementation.
string fullString = "CharSets.hxx";
string matchString = "c";
int startIndex = fullString.ToLower().IndexOf(matchString.ToLower());
returns -1 in Visual Studio 2015. When I changed string matchString to CHAR matchString then it returned 0 as it should.
ok, sorry for spam and previous useless post, but I found the reason.
IndexOf is CULTURE sensitive so here in Czech Republic we have c, h and ch letters = CharSets.hxx string looks like "Ch|a|r|S|e|t|s|.|h|x|x".
I dont know the best solution for fixing this, but this works for me:
int startIndex = fullString.ToLower().IndexOf(matchString.ToLower(), StringComparison.Ordinal);
or less verbose
int startIndex = fullString.IndexOf(matchString, StringComparison.OrdinalIgnoreCase);
Thanks for the fix CdTC, glad I'm not the only one. I tried making the edit in the source code, but I don't know how to build and "deploy" the extension. If I go to the output directory and double-click the VSNav.vsix file, it spins for a few seconds, then complains the extension is not signed (even though it is using the Key.snk file included in the project). Can the author do us a big favour and update the code with the change CdTC suggested? Thanks
Hey CdTC and AlexanderMDK. I've had very little time unfortunately to look at/maintain VSFileNav, however I appreciate you guys trying to isolate the problems and put fixes in. I'm therefore going to try and get my environment all set up again so that I can push an update on there for you.
The Codeplex code is a little stale (and I can't even remember my credentials) but I migrated it to GitHub a few months ago. https://github.com/IPWright83/VSFileNav I'm going to pick that up, see if I can add a few fixes and also swap the Visual Studio gallery such that it's included properly and you don't have to go via the dropbox links.
The aim of having a modal dialog was such that it's unobtrusive to your IDE and doesn't take up additional space (I tried a dockable version but didn't like it). It should be really easy to throw up a new dialog and cast it aside.
As such, it really should remember the position. I haven't done any work on VSFileNav for ages but I feel like I should try to re-vitalize it and I'll definitely prioritize taking a look at this.
It would be great if you could add the project that works for VS2013 into codeplex. I want to fix some things that are not working and customize the window a lil bit. Seems I just can't edit the manifest file in the generated extension from source code to allow the extension to work in VS2013
One thing that seems not working in the VS2013 edition is the ability to keep the window in the position it was placed.
Btw, great addon! Is the best app for file search that I've found.
Hi Mavincent - You can download from my dropbox https://dl.dropboxusercontent.com/u/41796243/VSNav-2013.vsix which should work with VS2013 (but I don't have access to test it).
I'm going to look at the main package at some point and see if I can adjust it to work with VS2012/VS2013, unfortunately they changed the format of the manifest file meaning I've got to modify it manually.
Unfortunatly I wasn't able to complete the install.
Here's what I got in the log message :
2014-09-22 08:26:47 - Searching for applicable products...
2014-09-22 08:26:50 - Found installed product - Microsoft Visual Studio 2010 Professional
2014-09-22 08:26:50 - Found installed product - Microsoft Visual Studio Professional 2013
2014-09-22 08:26:50 - Found installed product - Microsoft Visual Studio 2013 Shell (Integrated)
2014-09-22 08:26:50 - Found installed product - Global Location
2014-09-22 08:26:50 - Found installed product - ssms
2014-09-22 08:26:50 - VSIXInstaller.NoApplicableSKUsException: This extension is not installable on any currently installed products.
That's unfortunate - it all comes down to that manifest file. I've tried creating a new one https://dl.dropboxusercontent.com/u/41796243/VSNav.vsix . Would you be able to give that a try? I've tested VS2010, VS2012 and they both work from the single VSIX package now. If VS2013 works then I'll update the main download package for the extension.
Getting it to work with Visual Studio 2015 is similar as the steps described at http://researchaholic.com/2012/10/04/manually-updating-a-vsix-file-to-run-in-visual-studio-2012/
Approach (without using 7-zip): rename vsnav.vsix to vsnav.vsix.zip, unzip, edit extension.vsixmanifest, change VisualStudio Version to "14.0", possibly change SupportedFrameworkRuntimeEdition MaxVersion to "5.0". Rezip, rename back to vsnav.vsix, and run.
The complete extension.vsixmanifest looks like this:
<?xml version="1.0" encoding="utf-8"?>
<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010">
<Description xml:space="preserve">A simple tool used for browsing the files within a solution, supporting filtering as you type, camel case searching and wildcards.</Description>
<SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="5.0" />
Also if it is already installed for another version of VS, you can uninstall it by following these steps: http://stackoverflow.com/questions/22444799/how-to-uninstall-vsix-visual-studio-extensions and search for "nav" to find it.
If you want to bind showing the VSNav dialog to a shortcut / key combo (I use "ALT+O"), Go to Tools -> Options -> Environment -> Keyboard, search for "vsfilenav". Bind "Edit.VSFileNav" to ALT+O (or whatever you like).
Thanks for posting those details. I'm considering making a new package that supports all the newer installers + hopefully going forward and making a link to the old version available via dropbox instead. That way it's easier for people to install and use the built in extension functionality in Visual Studio.
One minor correction is the shortcut to bind to should be "Edit.QuickFindFile" unless you're on an old version.
The extension runs correctly with VS2012, but you have to modify the VSIX file manually to make it install with VS2012 (http://researchaholic.com/2012/10/04/manually-updating-a-vsix-file-to-run-in-visual-studio-2012/).
I am however currently working on an update which will directly install to VS2012 and also have the following improvements which I'm hoping to release soon.