neovim(the goodness that isvimbut with LSPs and MORE)- Optimized for front-end development.
zsh- p10k prompt (nice defaults, easy setup)
- bashmarks (cd shortcuts, embedded for no outside dependencies)
wezterm(my favorite terminal editor)homebrew(bin package manager)asdf(for managing other languages)
Download WezTerm.
Follow the Homebrew installation instructions then install Git with:
brew install git
Checkout a clone of these files with:
git clone git@github.com:nathanlong/dotfiles.git ~/.dotfiles
Then cd ~/.dotfiles
All the config files are managed from the ~/.dotfiles directory, but we create symlinks to all the different config locations. To run the full install:
cd ~/.dotfiles
./bin/install.sh
Follow the prompts to link the configs, and download brew and global npm packages.
Now that Neovim is installed, run nvim in the terminal and Lazy.nvim should install all Neovim plugins.
And that should be it! Happy coding!
There are three parts to how LSPs are installed and configured:
- Mason — installs server binaries only in
~/.local/share/nvim/mason/bin, which Mason prepends toPATHinside Neovim. - nvim-lspconfig — ships ~407 ready-made server configs as
lsp/<name>.luafiles. Lazy puts its directory on theruntimepath. Thelspconfig.utilhelpers are a side-car, not the main payload. - Neovim core (
vim.lsp.config/vim.lsp.enable) — merges configs and starts clients. See:h lsp-config.
Neovim collects every lsp/<name>.lua on the runtimepath and merges them with tbl_deep_extend('force', ...). Later sources win:
lsp/on the runtimepath — nvim-lspconfig's copies live hereafter/lsp/on the runtimepath — any overrides live herevim.lsp.config('<name>', {...})calls — highest precedencevim.lsp.config('*', {...})— special case, merges lowest, below everything above
To add an LSP server:
- Install the binary:
:Mason - Add its name to the
vim.lsp.enable({...})list ininit.lua - Only if defaults need changing, create
after/lsp/<name>.lua