Improving my Vim experience

Josh Sherman
5 min read
Personal Vim / Neovim

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.

Join the Conversation

Good stuff? Want more?

Weekly emails about technology, development, and sometimes sauerkraut.

100% Fresh, Grade A Content, Never Spam.

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.

Currently Reading

Parasie Eve

Previous Reads

Buy Me a Coffee Become a Sponsor

Related Articles