Categories
Uncategorized

Time for a Rebuild

If you know me you know that I’m a huge advocate for using Linux, terminal, and Vim. Out of the box, Vim may not be the most approachable piece of software to use. With a little (a lot) of time spent customizing it, it can become one of the most powerful tools in your arsenal. I’m so hopelessly down the rabbit hole of Vim, that I’m currently writing this blog entry in my terminal and when I’m done I’ll copy it into the browser.

I find most IDEs to be bloated and confusing. There are options and settings deep in menu trees and drop down menus. You have to touch the mouse all the time. I’m sure there is a lot of functionality they provide but I don’t know that it’s there, where it is or how to use it. Instead of figuring all that out, I decided to take this lightweight, fast, sleek, portable, ubiquitous text editor and bloat it to hell myself. Piece by piece, one at a time, on my own terms kind of bloat. Every feature I add to my Vim has been put by me, I know how it works, I know what it does, and it’s configured to do work the way I expect. At this point my Vim behaves pretty much like an IDE. There’s code completion, linting, auto pairs, indentation, git diff indications, file tree navigation, debugging instances, snippets, filetype specific settings, and more. Discovering plugins has been a blessing and a curse. The first thing I do when I find out I’ll be coding in a new language is google ‘ vim plugins’, start shopping, and download everything. If I spent less time streamlining my setup trying maximize efficiency, I might actually be able to get something done.

Anyway, last night I decided to burn it all down.

Auto completion is one of the most vital pieces and it’s the hardest to implement correctly. ‘YouCompleteMe’ has been my go to code completion engine for a long time but it’s a pain to maintain. The core server requires compilation so every update to YCM or Vim requires a recompile and the config and completion flags are finicky. Overall it works as advertised once you get it to work, but getting there can be a struggle. The most recent update to YCM changed it’s requirements so it no longer works with my install of Vim. Further, the maintainers of YCM aren’t tagging their commits with versioning so I had to manually go find the breaking commit, check out the hash, and recompile.

My operating system is Debian, which is great except for the fact that packages in the repo are often older. A lot of plugins require a Vim install of a certain version and often patches up to a certain point, which aren’t always easy to find. Which means compiling Vim from source; not too difficult, but enabling certain features requires having the proper libraries or header files installed which are tricky to track down.

All of this started to seem excessively tedious so I decided to look for other options and I stumbled upon ‘Conquer of Completion’. CoC works on Vim8 and Neovim. Neovim is a heavily modified fork of Vim, inspired by the fact that the original author, maintainer, genius, and benevolent dictator for life behind Vim, Bram Moolenaar; Is very picky about what goes into Vim and has ridiculously high coding standards. Anyway I was interested so I installed Neovim, low and behold version too low (thanks Debian). Uninstall, pull source, compile (worked out of the box whaaaat?), install, then stay up until 1 am playing with it.

Ok, cool it works. I can do my homework now… Why am I the way that I am?

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *