Editor(s)

Filip Miletic
5 min readAug 24, 2016

--

In programmer’s community talks (even wars) about text editors are everyday thing. In my humble high school beginnings in field of software development I was really fascinated by this, and never understood why. I sticked with Sublime, and always asked myself why people fight over two (mostly, there are more) ancient text editors. Everything was working fine for me, until I switched to Linux and Vim.

For the old times sake. I am watching Halt and Catch Fire Season 3 right now, so I had to throw some retro picture. :)

Making first steps

So after 3 years spent learning and using Vim, I do not consider myself some kind of knowledgeable Vim user, far from that, but I know my way around that text editor. I’ve been tweaking it all the time throughout, and learned a lot about philosophy that stood behind all those commands and modal editing. Fell in love with it sort to say, chording keys and commands was amazing, I could move around and manipulate text like wizard, it was very very powerful feeling. So after few years spent on Linux (Ubuntu, Debian, Arch, Gentoo, CRUX — my whole Linux journey, respectively), and as I grew knowledge about computers and software, I gave FreeBSD a shot. It was amazing, but in *BSD community I found out that many of them were using Emacs. It seemed like an overkill, whole OS based on Lisp, like WTF?

Near the end of high school I had first contact with Lisp, I was in Science center, on department of Computer Science, and we had a class where guy showed us history of programming languages, amazing experience, we were held whole day in room with laptops and projector, lecturer was live coding in some really really cool ancient programming languages like Algol, Modula, Pascal, Smalltalk, and then finally Lisp (and Scheme). And the weirdest thing, he was using some really old, weird text editor called Joe. And I was like “Cooooool!”. He told us one sentence that is still ringing in my head.

Every programmer should know at least one functional programming language.

Three years have passed since then. Few months ago, I got really interested in Lisp and Scheme, felt amazing how different it was, looking at the problem from whole different perspective. And then I hit the inevitable. Emacs.

I am on OS X now, as my main OS on which I spend 90% of my development and time in general. I installed naked Emacs distribution for Mac (stayed away from terminal, since I found cocoa app less stressful and more user friendly). I started reading, a lot, about modes, hooks, plugins. I spent 2 weeks doing nothing (I am student, so I made a little break during that time) but configuring and playing in ELisp and Emacs. What amazed me the most are the tools! People wrote so good plugins for different languages and environments that are far superior to anything I have encountered in other IDEs and editors, even Vim (ENSIME for Scala, SLIME for Lisp, Alchemist for Elixir, CIDER for Clojure, Magit, Org-Mode, TRUMP, Company, rtags, flycheck, CEDET, etc etc). All those plugins do not have equivalent at Vim side. There are great plugins at Vim but I always felt they were just that “plugins”, while in Emacs they are powerful environments and tools, not some plugs and pieces of code that will help you do something a little bit more than text editing.

Text editors as hobby, or fetish so to speak

And that is where I fell into the rabbit whole. Now I was thorn. Philosophically and pragmatically. My soul was divided in half. And result of that is that I have both Emacs and NeoVim installed on my machine. Which is madness, those are huge learning resources, I do not want to learn both, nor I need to, but I just cannot make my mind. I fell in love with both.

So, as we are programmers, we like to draw parallels between computer and real world. Let me give you and illustration:

My relation with Vim was like having a girlfriend for few years. You know, really nice person, humble, quiet, you both enjoyed in each other. Spend some really nice moments with each other. And you were happy. Then one day you went to some party, different kind of party than those that you are used to. And there you met the other type of girl. Totally opposite from your current girlfriend. And you felt very, very, attracted to her, because she was so different, offering so many different things that previous girl didn’t have, but you, in your guts really love the first girl, you know she is good for you and to your likeness.

I hope you get the felling now. To get back on track. I am believer in UNIX philosophy. And it went so well with my flow, where I used iTerm2, zsh (with oh-my-zsh), tmux and NeoVim. And what I liked the most about it is the minimalism aspect. I try to live my life that way, so you could say I am minimalist in my soul. And I really try to treat my code and my machine the same way, I do not know why, people say I am weirdo, nerd, call me whatever you like, but that part of me is what made me feel right at home with what I do. I love it because of that! Because I put myself, literally, in code.

Lovely Vi (m). So minimal and available everywhere.

Now, I am sitting on the crossroad, looking for answer on the internet, which I know I won’t find it there. I try to find the thing that will decide in which direction to go. But I cannot find it. And it is so frustrating. Few days I start Vim, write code in it, and I am like, yeah that’s it, I want it. And then after few days, Emacs icon in the dock just calls me, to fire it up, type C-x C-f ~/.emacs.d/init.el, and lose my self in those wonderful exotic lands of ELisp. And that’s the cycle I go through every few days. I want to focus on one, and learn it well, but I just can’t. Maybe It’s not on me to decide, maybe I just have to spend more time in both and things will come to it’s place naturally? If you have any story to tell, or experience, or book, or link, pass it to me, I want to read and expand my points of view.

P.S. I am done with the school ‘till October so I have time for these kinds of procrastinating things. :)

--

--