My Dev Setup
Is my setup really interesting? No.
Why am I writing about it? Because the more I verbalize my a topic, the more I can understand it, and the more that I slowly evolve it from what I consider "basic bitch" to... well, mine.
Vim, at least for me, isn't really about "look at how cool I am" as opposed to "I really want to customize what I'm using". It's also, for me personally, a way that I learn and master my tools completely from the ground up. I could use VS Code or JetBrains (I do, sometimes), and I could probably do just fine in them, but it doesn't force me to learn the inner workings of my tools, troubleshoot when something goes wrong, etc.
Finally, I hate using a mouse. I have to for a lot of things and I'm okay with that, but if I can choose, keyboard is my go to. I am someone who has always tried to learn and remember shortcuts for the tools I use, even before I got into Vim.
For the longest time, Vim was always a "this is what I have to use on my VPS", until I started to learn about how extensible it was. That learning only started within the past year or two. So... yes, I talk about Vim because I want to better understand it myself.
Github Repo
My dotfiles are stored on a public GitHub repo: dade/dotfiles
Key points are that this setup is similar to NeoVim Quickstart, which I recommend you use as a starting boilerplate, and then modified for my needs and split into individual files for easier management of specific plugins.
It also contains a setup for using nvim
as an external editor for the Godot game engine. You can read the setup in Godot x NeoVim
Brief Explanations
The setup is simple. Inside of the ~\AppData\Local\nvim
directory, we have init.lua
that requires/loads the core/
directory, and lazy.lua
from lua/badgr/
dirs.
lazy.lua
is pretty much the same as folke's default installation info on the lazy.nvim docs. I load inbadgr.plugins
, which is the directory that all of my different modules are split into.core/
contains my basic implementations before plugins. This is where myvim.opt
andvim.keymap
that don't require any plugins. This is partially optimized to my workflows, but doesn't really contain any mind blowing stuffoo
andOO
(double-o and double-shift-o) are just simple keymaps to start editing on next or previous lines, but also is used to add surrounding line breaks in case I want non-contiguous codes
most people use to start a search/fuzzy-find patter, but I just got too used to making these my splits, so that's what I use it for.f
has become my 'find' key nowadays The rest is consistent, or similart to, Quickstart
Plugins
The rest is rather standard, but a list of the plugins that I use in case you are curious about which ones might be useful for you.
Personal plugin manager of choice is Lazy, but you can use Packer or whatever else. It's all good.
folke/lazydev.nvim
- mostly I use this for the faster auto-completion, but it does some nice thingsnvim-telescope/telescope.nvim
- has a few dependencies in the file, but the main thing here is the incredibly powerful navigation through fuzzy searches.- You will need the
telescope-fzf-native.nvim
plugin to work. On windows, this required a bit of work setting up a C compiler, but otherwise, that was the only 'faff'
- You will need the
stevearc/conform.nvim
- formatter. It's probably the best one out thereSaghen/blink.cmp
- code completionwillamboman/mason.nvim
- LSPs and Linters (I think the project is now onmason-org/mason.nvim
)mason-workaround.lua
- this is a fix I found on reddit for the breaking changes that 2.x brought in, this goes away when Lazy updates, most likely
neovim/nvim-lspconfig.nvim
- part of the LSP setup with mason. Pretty sure this one is required for the rest to worknvim-tree/nvim-tree.lua
- I like to sometimes have a visual representation of my file structure, because I don't always remember what I'm looking for. That said, this isn't often used. Most fuzzy find my files with telescope.mfussenegger/nvim-dap
- Debug adapter. This is used for the Godot x Neovim setup.folke/whick-key.nvim
- shows up a little menu when you start to press keymap combinations to lead you through. i.e., pressing your leader key shows what you can press next to navigate through your configured keymaps. Useful when starting outfolke/trouble.nvim
- neat little plugin to give better quickfix list functionalityfolke/todo-comments.nvim
- better comment highlighting, and gives the ability to cycle next and previous notehabamax/vim-godot
- better syntax highlight, indent management, etc. for godot
The "Many-In-One" Plugin
mini.nvim
is a powerhouse of a plugin series from echasnovski
. These are different takes on the most common plugins out there, but they are all so well-made for working cohesively together that I have moved away from those with similar funcitonality. I advise taking a really good look through all of the available plugins there, but these are the ones that I use:
mini.ai
- not AI, but the "around" and "inside" identifiers in vimmini.move
- Alt + navigation keys to move selected line(s)mini.surround
- super fast and powerful "surround" actionsmini.splitjoin
- quick and easy multi-line-to-single-line conversion for codemini.pairs
- very slick auto bracket / auto-pairs
Optional, just for "slickness"
mini.animation
- moves your cursor aross the screen rather than teleports itmini.cursorword
- highlights word underneath cursormini.indentscope
- draws a line along the scope of your current code indent. Simple, but it also animates, so it's just that extra bit of flash. Completely unnecessary, but wonderful in my opinion