nvim
nvim copied to clipboard
Moving from CoC to native LSP in nvim 0.7
Leaving the CoC behind.
kitty terminal with TokyoNight terminal theme and Victor Mono nerd font.
My config for Nvim using native LSP with some sane defaults and settings, mainly aimed at web development but ready to go with Python, Rust, Golang, Deno and Lua.
Uses the latest 0.7+ Neovim
Clone the repository into ~/.config/nvim
git clone https://github.com/bushblade/nvim.git ~/.config/nvim
Install Packer
git clone https://github.com/wbthomason/packer.nvim\
~/.local/share/nvim/site/pack/packer/start/packer.nvim
Install language servers
Most available via npm
npm install -g typescript typescript-language-server vscode-langservers-extracted vls @tailwindcss/language-server yaml-language-server @prisma/language-server emmet-ls neovim graphql-language-service-cli graphql-language-service-server @astrojs/language-server
Lua, Pyright, Deno, Gopls and rust-analyzer available in Arch/Manjaro repos
Check your package manager for availability if not on an Arch based distro - brew, apt etc.
sudo pacman -S lua-language-server pyright deno rust-analyzer gopls
Install formatters
prettier with npm
npm i -g prettier
stylua is in the AUR
pamac install stylua
Check your package manager for availability if not on an Arch based distro - brew, apt etc.
autopep8 for python is in Manjaro/Arch repos
sudo pacman -S autopep8
Check your package manager for availability if not on an Arch based distro - brew, apt etc.
yamlfmt for yaml available with pip
sudo pip install yamlfmt
Launch Nvim
On the first run of nvim be sure to install plugins.
:PackerInstall
Then compile loader file.
:PackerCompile
Note: Installing Firenvim
Run this command in nvim to install FireNvim in your browser.
:call firenvim#install(0)
or install the FireFox extension or the Chrome extension
Adding custom Snippets
The conifg uses luasnip paired with rafamadriz/friendly-snippets for VS Code style snippets. You can add your own snippets to the config snippets directory . You'll also need to edit the snippets/package.json to be able to load your snippets in the correct filetype. One test snippet is included as an example.
Currently installed plugins
-
wbthomason/packer.nvim - Plugin manager
-
neovim/nvim-lspconfig - LSP
-
nvim-telescope/telescope.nvim - Fuzzy find anything
-
nvim-treesitter/nvim-treesitter Language parsing for highlighting and more
-
hoob3rt/lualine.nvim Status line
-
glacambre/firenvim Embed nvim in firefox or chrome
-
hrsh7th/nvim-cmp Auto completions, suggestions and imports
Source completion includes:
- hrsh7th/cmp-cmdline command line
- hrsh7th/cmp-buffer buffer completions
- hrsh7th/cmp-nvim-lua nvim config completions
- hrsh7th/cmp-nvim-lsp lsp completions
- hrsh7th/cmp-path file path completions
- saadparwaiz1/cmp_luasnip snippets completions
- L3MON4D3/LuaSnip Snippets
- rafamadriz/friendly-snippets
-
tpope/vim-fugitive Git tools
-
tpope/vim-surround Surroundings pairs mappings
-
numToStr/Comment.nvim Vim style commenting
-
knubie/vim-kitty-navigator Move between Nvim and Kitty splits
-
windwp/nvim-ts-autotag HTML/JSX auto tags
-
windwp/nvim-autopairs Auto bracket and quote pairs
-
windwp/nvim-spectre Project wide find and replace
-
mhartington/formatter.nvim Formatting
-
airblade/vim-gitgutter Git status in the sign column
-
leafOfTree/vim-matchtag Highlight matching tag in HTML/JSX
-
phaazon/hop.nvim Jump anywhwere in your code
-
kyazdani42/nvim-tree.lua File tree
-
JoosepAlviste/nvim-ts-context-commentstring Better commenting based on file type
-
onsails/lspkind-nvim Icons in completion
-
folke/tokyonight.nvim Theme
-
folke/trouble.nvim Show the problems in your code
-
folke/which-key.nvim Keymap helper
-
folke/todo-comments.nvim Highlight and search project todos and notes
-
norcalli/nvim-colorizer.lua Display the colour of your hex/rgb/hsl value
-
kevinoid/vim-jsonc Comments in json filetype
-
akinsho/bufferline.nvim Buffers in tabs
-
weilbith/nvim-code-action-menu Better code actions
-
delphinus/vim-firestore Syntax highlighting and completion for Firebase rules
-
rmagatti/auto-session Session management
-
andweeb/presence.nvim Rich presence in Discord
-
goolord/alpha-nvim Dashboard
-
mbbill/undotree Undotree