&gt; indexes everything<p>So should your text editor (and&#x2F;or it&#x27;s companion programs)<p>&gt; and provides superior auto-completion.<p>See above. Superior is a bold claim, superior out of the box for &quot;strongly&quot; supported languages, perhaps? (Eg: one way of working with java in vim is to use eclipse for extracting some information about a project[1])<p>Personally I&#x27;m more familiar with vim, than with Emacs -- arguably the main difference is that Emacs has one standard and sane scripting language (lisp), while vim doesn&#x27;t (I&#x27;m very happy a lot of masochists work tirelessly to provide vim plugins for everything I need (and a great deal I don&#x27;t) -- but I think it&#x27;s hard to argue that vimscript is a &quot;good&quot; language. And having other bindings (eg: ruby, python) is a bit of a mixed blessing)).<p>But what they have in common, is a strong focus on making it easy to automate transformation of text. Any kind of text. With any kind of automation, via commands. As such they empower a continued process of improving the process of writing and editing.<p>I like Moolenaar&#x27;s (vim&#x27;s creator) short text and expanded talk on 7 habits of effective text editing:<p>&quot;7 Habits For Effective Text Editing 2.0&quot;:
<a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=p6K4iIMlouI" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=p6K4iIMlouI</a><p>&quot;Seven habits of effective text editing&quot;:
<a href="http:&#x2F;&#x2F;www.moolenaar.net&#x2F;habits.html" rel="nofollow">http:&#x2F;&#x2F;www.moolenaar.net&#x2F;habits.html</a><p>I often feel that modern IDEs with typical &quot;modern&quot; languages, tend to trap you in a certain way of working that is &quot;with&quot; the IDE, that tend to be counter-productive if that &quot;one true (editing) process&quot; doesn&#x27;t fit. And they tend to provide only something like 70% of the benefit of a true IDE, like a Smalltalk System coupled with a Object Database, or something simpler like a complete Forth system.<p>For better or worse, all current popular programming systems (that I&#x27;m aware of) has the hopeless abstraction of program text organized in file system files in folders (often coupled with half-integrated resource files, be they xml-layout, binary images, fonts or other stuff).<p>So no IDE <i>can</i> be effective, because the central abstraction remains only half-structured text, and you can only get that far with strapping semantic analysis on top. So as long as you&#x27;re (forced to) working with text, programs that enable text editing and transformation will have an edge.<p>I don&#x27;t think there&#x27;s a wall between the two: you might want to use something like [1], or vim-mode in IDEA or something -- but if you want <i>one</i> effective tool to work with: Documentation, a handful of mark-up languages, a data language (like SQL), and a handful of programming languages (eg: assembler, C&#x2F;C++, python), patch-files and perhaps writing email -- then I think text editors are going to be a good investment.<p>I do think that text editors (for writing code) is a kind of local maxima - but <i>if</i> we want to stick with traditional files and file systems (probably a terrible idea), they do help facilitate tools that have somewhat loose coupling (between editing, debugging, high-lighting, re-factoring, formatting) and I think that helps keep systems portable (you can take a similar set of C++ files and preform a similar set of transformation (with completely different tools) on Linux and Windows and end up with (different) binaries that preform a similar function.<p>Another great video that I think demonstrates text editing as different from &quot;just&quot; an IDE, is Russ Cox&#x27; short intro on ACME:<p>&quot;A Tour of the Acme Editor&quot;:
<a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=dP1xVpMPn8M" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=dP1xVpMPn8M</a><p>In short, I suppose text editors are a superior user interface for interacting with text-like structures <i>in general</i>. The relative benefit for programmers depends a bit on what kind of system you work with: I&#x27;d prefer a simple, less verbose language, like Kotlin coupled with a plain editor, to an IDE coupled with more traditional Java (esp: Java 5) -- I firmly believe auto-generated code is a dark pattern: if it can be automated, it should be moved to a run-time or a library so that it can be maintained in one place, rather than leaving dead and possible buggy code in dark corners of a large code-base.<p>[1] <a href="http:&#x2F;&#x2F;eclim.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;eclim.org&#x2F;</a>