A good text editor is the most important tool for me. My favourite text editor, Kate is unfortunately broken after upgrading from Kubuntu 12.04 to 16.04 (several things simply don’t work anymore). I’ve often looked for other text editors, I needed one recently on Mac, but I’m always disappointed by what I find. Here I present some of the key features I want in a text editor.

I use my text editor for programming, writing these articles, and the source for various websites. I’ve previously found Kate to be a great text editor; it’s just unfortunate that recurring defects keep breaking it.

Unicode and proportional fonts

I live in the modern age and need support for the full range of Unicode characters. I need an editor that has proper font support, letting me use whatever characters I want.

This includes supporting proportionally spaced fonts. Mono-spaced fonts are an anachronism as far as I’m concerned; text is easier to read when it’s spaced properly. This is certainly true for my text heavy documents, like this article, but I also prefer to code this way. Spacing became even more important as Unicode became popular: there are simply too many characters that don’t fit well in a mono-spaced font.

I need loading and saving to recognize and use UTF-8.

Basic indentation support and no auto-typing nonsense

For programming I want the editor to maintain my indent position. I press “enter” and it goes to the next line on the indentation level I’m currently on. I don’t want the editor to modify the current line, add new indents, or do any of this annoying behaviour that so many editors love to do now.

Basic block indentation features are expected, possibly with a feature to reindent code on pasting. I would also love to have an indent aware copy: if I copy an indented block all the common indentation is stripped. Currently I use Kate’s block selection mode to do this.

I expect tab to be supported as the indentation mode, with an option to change the visual size of the indent. I think I’ve made my reasons clear before.

I don’t expect any of this to be the “default” in the program. I’m okay with having to go into the preferences and switch some settings. It’s important that I can apply this to all document types though; I dislike editors where every file extension invokes a completely different editing mode.

Extended syntax highlighting

I want my syntax highlighting to be detailed enough to at least distinguish between symbols, operators, and brackets while programming. I’d prefer an editor err on the side of too many categories than too few. If I don’t want to distinguish some categories I can make them the same color.

I want it to be easy to add custom syntax highlighting. I find myself working with my own languages, like Leaf, or markup often, or on projects with custom code. I need a way to highlight these files.

As a nice bonus I’d like a way to copy code with the syntax highlighting. This means I can paste it in email exactly as I see it. In Kate I use the export to HTML feature and copy from the browser — a bit of an indirect approach.

Integrated search and replace

I search through code often while programming. I need to have a decent integrated search and replace tool. It doesn’t need to support a lot, a simple search and regular expression matching. Kate’s current tool is good enough (were it not for never saving any of the settings).

Miscellaneous

Text snippets – There are some characters that don’t exist on the keyboard; I like to create keyboard shortcuts to enter them.

Spell checking – I write a lot of articles in my text editor. Having an integrated spell checker helps me out. If it can distinguish syntax that’s great, but otherwise I can simply filter on my own: just underline, or otherwise highlight, words that look wrong.

Two window layout – I find the best use of my monitor’s HD ratio is to have two text editor windows opened side-by-side. It’s additionally convenient if I can minimize just one of them (to look at a console behind it). I expect the two windows to share open documents (some editors seem to open an entirely new instance instead).

Quick document switch – A quick way to switch between open documents, using just the keyboard, is a nice feature in Kate. Tabs along the top don’t help me since I have too many documents open to see them all, nor can I easily switch to a specific file using the keyboard.

Word wrap – Mainly when I write articles I like to have text naturally wrap at the width of the window. For code I usually turn this off, though lately have been leaving it on.

Cross-platform, or Linux – Something that works on Linux, Mac, and Windows, would be nice, but I’d be happy if it just works on my primary platform Linux.

Line bookmarking – A way to mark a line and then quickly skip between them. I usually use this while debugging or refactoring code.

Keep lines in view – A relatively minor feature, but I want the scrolling to keep X lines in view rather than letting the cursor reach the absolute top/bottom of the view.

Any contenders

If you know of an editor that can do all of this then please tell me. I’d be happy if the errors were fixed in Kate, but I’ll be looking around in the meantime.

I’ve been fortunate to work on a wide variety of projects, from engineering to media, from finance to games. Follow me on Twitter to share in my love of programming. If you’re interested in something special just let me know.