Notepad++ is a free full-featured text editor for Windows, and the one I primarily use. Some of its many features include:
- A huge amount of customization, many can be set independently for various file formats.
- Dozens of macros (change case, sort lines, letter-number sorting, etc.)
- Powerful searching, including find, replace, count, find in folder, etc.
- Support for various codepages, including Unicode, and conversion between them, and Macintosh/Microsoft/UNIX line break support.
- Color syntaxing for dozens of programming languages.
- Plugin support for many additional tools like a spell checker.
- The program has a lot of wonderful features. Far too many to list here, but more than any other text editor I've ever seen.
- New updates frequently break compatibility with any installed plugins and turn them off or stop them from working. This requires you to have to wait for the plugin creator to fix them and send out updates which you have to install and reactivate.
- The spell checker plugin, even though it's integrated directly into the program, seems to get broken after every update and needs to be manually fixed.
- By default, when you open the program, it re-opens every document you've ever opened with it. You have to manually close each document to prevent this. Thankfully, there is an option turning off this bizarre feature.
Turn Off Session Memory
By default, Notepad++ remembers the documents you've opened across sessions which requires you to have to manually close them or they will continue to reopen with each subsequent use (or fail to open and pop a warning when they no longer exist). I do not like this feature, but it isn't obvious in the settings where to turn it off. There is a section called Recent File History, but this only applies to recent files listed in the File menu. To prevent Notepad++ from keeping files open across sessions, go into Settings -> Preferences -> Backup, and uncheck "Remember current session for next launch."
Turn On Auto Update Changed Files
If you have a file open in Notepad++, and it is modified by an external source, Notepad++ will pop a dialog asking if you want to refresh it. I prefer to have Notepad++ automatically refresh modified files. To turn on this feature, go into Settings -> Preferences -> MISC. -> and check Enable and Update silently.
Custom Tab Styles Per Format
If you write code and need to have your tabs set as spaces for a particular project, but prefer tabs for everything else, you can setup custom tab styles for every supported format. Go into Settings -> Preferences -> Language. Here you can set your default tab length and type (tabs or spaces). By clicking on an item in the Tab Settings box, you can specify a custom tab style for a specific format. This way, if you want Python to use spaces, but HTML to use tabs, you can do that.