DEV Community

Adib Hanna
Adib Hanna

Posted on • Edited on

What’s you’re dev setup?

I finally started using Vim + Tmux full time! I can’t believe I waited that long to switch.

I’m using LunarVim for a reasonable Vim configuration, and this Repo to config Tmux https://github.com/gpakosz/.tmux

I also mainly use Iterm2 for my main Terminal (and trying to get Alacritty to behave well with Tmux)

For Rust development, I’m using Rust Analyzer, and for Typescript I’m using Typescript bin, typescript-language-server, Eslint and Prettier.

What’s your current dev setup? Would love to see some photos!
Cheers.

Top comments (1)

Collapse
 
pbnj profile image
Peter Benjamin (they/them) • Edited

Neovim and the surrounding ecosystem is great and I appreciate that they're pushing the whole vim ecosystem forward, but I moved back to vim after several years on neovim for a few reasons:

  • I am not seeing the performance benefits that the neovim ecosystem is touting, especially with all the plugins that distinguishes neovim from vim (e.g. tree-sitter, lsp, lua-based plugins, ...etc). For example, navigating around a 1400+ line logfile (with 3000+ character-long lines), neovim was painfully lagging. After checking & disabling the usual culprits (e.g. cursorline, cursorcolumn, relativenumber, number, synmaxcol, syntax sync minlines=250, a bunch of plugins) and trying a gui neovim (neovide) & terminal neovim, I was able to narrow it down to syntax on. Disabling it with syntax off resolved the issue, whereas my unoptimized Vim (with loaded plugins and syntax enabled) didn't have a problem moving and navigating around that file.

  • Neovim and the ecosystem is experiencing a high churn rate with neovim introducing new APIs and plugin authors making backward-incompatible changes. For example, nvim-treesitter requires neovim v0.7+. nvim-lspconfig has configurations that only work on nightly (v0.8+). As a backend/infrastructure/security engineer who targets a wide-range of machines for work & personal life (e.g. aws/azure/gcp vm's, k8s/docker, raspberry pi's, macos, various linux distro's at home & in cloud), it's difficult to consistently get neovim v0.7+, so the alternative for me would have to be build from source every time, whereas vim has been stable for a long time and wherever I find myself, vim is a simple package manager install command away, my 1 file config can be downloaded with a curl, and everything works consistently.

  • Nothing beats the composability and the unix philosophy of vim and the shell. Before LSPs were a thing, I was already getting project wide diagnostics in vim by running an external linter/compiler, capturing the output in a format (i.e. :h errorformat) that vim understands, e.g. :cexpr system('<tool> | awk -F ''{print ...}'' ') , then :cnext/:cprev (or using my keybindings ]q, [q) takes me straight to the problematic line and column. Neovim has this from vim, but the LSP architecture and ecosystem breaks away from the simplicity and composability due to the server/client model and custom TUIs.

TL;DR -

dev screenshot