F-cked up with all IDE bloatware (for my purposes they are all overcomplicated and inconvenient), I came to an idea, that I'd probably better use a good editor than an IDE.

I DON'T need projects, I don't need build management (I'd prefer to build manually, from command line, and write build scripts myself), I don't need perspectives, workspaces, modules, etc.

I need (in importance descending order)

  1. Nice GUI. (I am sorry to say this to be the first priority, but that's my taste, without it I feel uncomfortable and go unproductive). Please don't offer VIM (with no GUI) or [X]EMACS (with ugly GUI). No weird key scheme (like VIM has), no command modes (or optionally enablable and unimportant in the editor's usage), etc.

  2. Manually-definable foldable regions (like in c#) (defined by special macroses, escaped by (any language's) comments) in any language. This is the most important requirement. If I find an editor meeting this point alongside with 1st one, I'd be happy already. In Windows, as far as I can remember, UltraEdit used to have this facility, but I am not sure (update: now I've installed UEx anc couldn't find such a feature there).

  3. Simple, but swiss-clockwork-reliable refactoring, better to say sort of "multifile search-and-replace on steroids".

  4. Syntax highlighting.

  5. Corresponding open/close parentheses/braces/tags/quotes/etc. pairs highlighting.

  6. Autocompletion. Probably simple, dictionary-based. Would be very nice if it could wok as an IDE, showing me class members after I put a dot and press Ctrl+Space, but I can afford lack of this feature if 1-4 features are there.

  7. Code snippets / macrosses.

Explanation of point 2:

Those who are familiar with C# possibly know of #region/#endregion directives. I can place them anywhere in code, and the editor will offer an option to fold the block delimited into one line (with a title specified as the starting directive argument) and unfold it on demand (much as most of modern editors can do with language blocks, like function bodies for example, but I'd like to be able to do this with any particular block of code I want).

IMHO it could be pretty easily implemented (in editors, that have already implemented code folding for language blocks) for ANY language, no language syntax analysis required. A region defining directives syntax can be provided by an editor, escaping those directives by a language's comment line syntax.

For example, NetBeans IDE has this functionality for Java, it is well described here: http://wiki.netbeans.org/FaqCustomCodeFolds But in NetBeans this, unfortunately, works only with Java (and, maybe, some other) language, and doesn't work, for example, with Scala.

I mostly code Scala, but, as I wrote, I'd wish, and can't see any reasons why couldn't be it made available as a language-agnostic feature - if the line contains "(whatever) #region" - this is a foldable region start, if there's something after "#region" in the line - this is the region title, if the line contains "(whatever) #endregion" - this is the region finish. Just find a start and a corresponding finish and fold it. User can replace "(whatever)" with any particular's language comment sign.

UPDATE: answer found (just to summarize and share an answer in a more informative form, I'll include it here):

There vere many good suggestions (I am going to experiment with SciTE and try learning EMACS and VIM when I'll have a proper mood). Googling myself I've also find an interesting E-TextEditor (an open-source wxWidgets-based (means cross-platform, there were successful efforts to build and install it on Fedora 10 and on Ubuntu 9.04) Mac's TextMate clone for Windows).

But the answer for now, found thanks to fschmitt's suggestion, is Kate.

To get my point #2 (above, in the question) for Scala (easily adaptable for any other language the way I've explained), I had only to add 2 lines in "/usr/share/kde4/apps/katepart/syntax/scala.xml":

<RegExpr attribute="Decimal" context="#stay" String="//#region.*$" beginRegion="Region1"/>
<RegExpr attribute="Decimal" context="#stay" String="//#endregion.*$" endRegion="Region1"/>

I've taken the idea from C# syntax definition file, cs.xml. The only trick is that for this comment-aided hack to work these lines are to be placed before lines which define the language's comments.

And a pleasant surprise there: Kate does not depend on tons of KDE libraries as I used to suppose - in classic (Gnome) Ubuntu 10.10 "apt-get install kate" has only downloaded one humble (less than a MiB) package.

closed as primarily opinion-based by slm, jasonwryan, Braiam, Hauke Laging, devnull Apr 19 '14 at 6:26

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • what is 2? could you provide a link to documentation on that feature. please – Stefan Oct 3 '10 at 20:10
  • @Ivan: Your question lacks several things. 1. Define “nice GUI”. (For me, Emacs does have a nice GUI: it has useful stuff and doesn't get in your way.) 2. Define “fordable” — or did you mean “foldable”? 3. What programming languages must be supported? – Gilles Oct 3 '10 at 21:31
  • @Gilles, thank you, I indeed mean "foldable". @Stefan, ok, if it's not obvious (wasn't my misstyping the reason why you coludn't understand?), I'll explain in the question body. – Ivan Oct 3 '10 at 23:18
  • @ivan, yes i understand now :) – Stefan Oct 3 '10 at 23:50
  • 1
    Well the lines that you need will likely be different based on your preferences. I'll post my .emacs online soon and leave a link here when I do. – Steven D Oct 4 '10 at 3:22

If you like Ultra Edit, why don't you try its Linux version? Otherwise, you might try Kate. Although I don't know whether it fulfills you requirements, it is the most feature rich and configurable modern GUI editor I have seen up till now (apart from Emacs, which you explicitly don't want).

  • I've installed UltraEdit for linux, but couldn't find that regions folding feature there :-( – Ivan Oct 3 '10 at 19:48
  • And the winner is... Kate! :-) Couple of lines in syntax definition XML and that's it! And a pleasant surprise there: Kate does not depend on tons of KDE libraries as I used to suppose - in classic (Gnome) Ubuntu 10.10 "apt-get install kate" has only downloaded one humble (less than a MiB) package. – Ivan Oct 4 '10 at 9:24

I know you said you don't want funky hotkeys, but from what you want it really sounds like a feature list of GVIM. Maybe it's worth using vimtutor to learn why (G)vim works like it does. I was scared too at first, but now I wouldn't want to go back.


I don't know about all of your requirements, but two projects you should check out and try is Geany and SciTE.

Both of these projects sports lightweight, yet functional, editors that keep things simple.

  • AFAIK Geany does not comply to 2., which is means it pain to use for me. SciTE as well does not seem to have such a feature (according to its documentation). – Ivan Oct 3 '10 at 19:50
  • +1 for SciTE. (ignore these other characters they are there to fill in the 15 character requirement) – Secko Mar 21 '12 at 15:55

Well, I found NetBeans has some plugins for Scala. It has plugins available for many other languages too. Maybe you can give it a try.


Eclipse with plugins like ShellEd is really a good choice ,Geany does also work well.


Try Notepad++ with Wine (windows emulation layer)

NP++ supports syntax highlighting for dozens of languages.

Its clean, fast and efficient and can handle large scripts. No IDE-style bloatware.


Although this is an older question, I would like to note that Sublime is a very nice code editor with plug-in support. It works on Linux and Mac as well as Windows, and there is a great community built around it. Definitely worth checking out if you're still using notepad++ or similar.

Not the answer you're looking for? Browse other questions tagged or ask your own question.