https://tduyng.com/atom.xml

Returning to Neovim for coding

I’ve started using Neovim for coding again.

Early in my career, like many others, I tried to learn Vim. At first, it was difficult to get used to, but I found it fun and rewarding. For some, Vim can feel more "professional," and there's something satisfying about the cool things you can do with it.

I really liked Vim, but when it came to coding, I ran into many challenges. Configuring Vim with the right plugins, settings, and workflows took a lot of time. Back then, I was working with many different languages—Python, Ruby, JavaScript, TypeScript, HTML, CSS—and I could never quite get Vim to work smoothly across all of them. I faced too many issues, so eventually, I switched to VSCode and IntelliJ for most of my coding, using Vim only for occasional file edits.

Now, with modern terminals like Wezterm and Ghostty, I find myself enjoying the terminal environment more. I want to keep my hands on the keyboard as much as possible, so I decided to give Vim another try, but this time with Neovim. Neovim is a more modern and flexible alternative to Vim, with support for Lua-based scripting and plugins.

It’s taking some time to get fully comfortable with Neovim again, but I’m using LazyVim to manage my plugins, and it’s been fantastic. It supports many of the plugins I need for coding, especially the which-key plugin, which shows all available keybindings in Neovim—something I missed when using Vim before.

LazyVim makes it easy to add, remove, or configure plugins, and the documentation is top-notch, so I can quickly reference the keymaps I need.

I also tried Helix, a text editor built from scratch with Rust. It’s designed to provide a similar experience to Vim but with better performance. It’s still young and doesn’t support plugins yet, and it lacks features like a file explorer, which I rely on. However, I think it has potential, and in the future, it could be a solid alternative to Vim.

For now, I feel more comfortable with Neovim, but it's still not perfect. I continue using VSCode for larger projects, but I’ve enabled the Neovim extension in VSCode, which lets me use Vim keybindings and workflows within VSCode. It’s not the full Vim experience, but it’s been a great way to continue learning Vim while working in a modern IDE. At least now, I don’t need to use the mouse when coding in VSCode.

For smaller projects, I stick to using Neovim in the terminal.

For browsing, I now use Vim as well. With the Vimium extension, I can use Vim-like keybindings and perform almost everything without touching the mouse. It’s really fun and efficient to use.

2025/01/03 03:00 PM