Improving my Vim experience

I love Vim but the fact is I’ve been soul searching for a new editor because I
am starting to think I am missing out on things. I decided to put together a
list of issues that I have with Vim so that I can work towards imprioving my
Vim experience and eradicate my thoughts that I need to move to an IDE.

  1. Better syntax highlighting for JavaScript. I’m slinging a ton of JavaScript
    these days and I feel like my current color scheme and/or syntax file is
    falling short. Most of the file is the generic text color (white) and it’s just
    a bore to look at. Same deal with handlebars templates, I’ve tried some stuff
    and nothing has really worked that well.
  2. ctrlp.com doesn’t include symlinks when searching. I work on projects that
    use symlinks to alleviate needing to remember which GUID belongs to what, being
    able to include them in search would be pretty epic. Probably need to add in
    some more things to ignore as it’s pretty messy dealing with a project that has
    build directories. Incidentally the symlink issue pops up when using git as
    well.
  3. The ability to identify variables that are defined in a file but never
    utilized and which variables are referenced without being defined. This seems
    like basic functionality for a lot of IDEs out there and it’s something that
    isn’t always caught by running a lint. I know I have wasted time trying to
    track down typos in variables in the past and I’m sure it will happen again in
    the future.
  4. Snippets. It’s just something I’ve never gotten into but I once had a plugin
    installed that would allow me to type in cl<TAB> and it would expand out to
    console.log(). That was nice and I need to get back to that.
  5. Been having this weird issue where I can’t get to the end of a line no
    matter how hard I try. I’ll hit $ and it will jump to about 2 characters away
    from the end of the line. No idea what causes this but it’s fucking annoying.
    I end up having to go to the previous line and backspacing up to the previous
    line.
  6. Poor auto-indention inside of HTML blocks. Something else that I think I
    broke when I dropped all of my plugins and started fresh. Whenever I’m in a
    file that’s a mix of HTML and code (let’s say PHP) the auto-indentation for the
    markup just isn’t there.
  7. Infinite undo buffer. I had this working at one point and I started to
    rework it to be pure VimL instead of relying on setting up directories in my
    dotfiles install script. Just never finished this. Probably could stand to get
    a plugin that visualizes the undo history as well.
  8. Auto-wrapping lines to 80 characters for Markdown files. Also disabling the
    auto-indentation while writing prose. Gets super annoying when a line happen to
    start with for and the next line indented.
  9. Figure out how to not get lost when working with larger blocks of code. I
    know I really should be keeping things small and in manageable chunks but
    sometimes that’s just not possible, especially with markup. I’ve started to put
    a comment after the end of each closing tag but that just makes more work for
    me. Seems like tagbar may be able to provide that, will need to check it out.
  10. Plugin autoupdating. I have some hotkeys defined to make it easier to
    update but it would be significantly better if it was automatic. That being
    said, seems like it would create too much lag to check for updates whenever I
    run Vim but perhaps I could detach a process, let it update headless so it
    doesn’t affect the current session. If nothing else it could check if there are
    updates and set a flag to update me next time I launch Vim that I have updates
    available. Actually, this could make a decent plugin if one doesn’t already
    exist.
  11. Marks. I don’t use them and I really should. I had a mark browser that
    never really worked right but it seemed like it would bridge the gap for me. I
    still run around injecting comments into the file so I can search for the
    string and find where I was at. It’s highly inefficient.
  12. I hate that when I select text and paste something in it’s place that the
    selected text ends up in my current buffer. I’ve tried to get hip to using the
    buffer history but it’s a bunch of extra keystrokes and I can never remember
    them. It would be nice if I could just turn this functionality off
    indefinitely. I just want y to do my copying, not p.
  13. I need to get better with splitting buffers. I’ve fallen into the trap of
    relying on splitting the window in iTerm2 when I feel I’d be better served by
    doing so in Vim directly. If for no other reason, so that I can have the same
    experience if I’m logged into a server or local. I’m doing some further soul
    searching on whether or not I should continue to use iTerm2 or switch back to
    Terminal.app and possibly adopting tmux. Same logic there, so I can have a
    consistent experience regardless of where I’m at.

I definitely got some work ahead of me! I am planning on addressing one or two
things on the list a week. Good chance I am going to strip out all of my
packages again and start fresh. Toying with other editors is always fun to see
what I may be missing out on but at the end of the day Vim is still the editor
for me. Fixing this list of issues seems way more logical than attempting to
deal with all of the shortcomings I find with other editors and IDEs.

Josh Sherman - The Man, The Myth, The Avatar

About Josh

Husband. Father. Pug dad. Musician. Founder of Holiday API, Head of Engineering and Emoji Specialist at Mailshake, and author of the best damn Lorem Ipsum Library for PHP.


If you found this article helpful, please consider buying me a coffee.