diff options
author | Matthew Lemon <y@yulqen.org> | 2023-05-14 09:10:26 +0100 |
---|---|---|
committer | Matthew Lemon <y@yulqen.org> | 2023-05-14 09:10:26 +0100 |
commit | 0721b537a8aa3be8b70c183b25951494df9dcd0e (patch) | |
tree | eff07bbc31aeefbb9d2e441bb5ca8b5a5a527ffb /nvim/README.md | |
parent | 10a89dfbc6bc57ce12c8cf90f1b38a34b728b369 (diff) |
Installs nvim config base-idea
Diffstat (limited to 'nvim/README.md')
-rw-r--r-- | nvim/README.md | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/nvim/README.md b/nvim/README.md new file mode 100644 index 0000000..f607a78 --- /dev/null +++ b/nvim/README.md @@ -0,0 +1,196 @@ +# A Basic Stable IDE config for Neovim + +> Why does this repo exist? + +This config attempts to provide a rock solid fully featured starting point for someone new to Neovim, or just tired of maintaining the basic IDE components of their config. + +> What makes it "rock solid"? + +All the included plugins are pinned to a version that ensures they are compatible and will not update potentially introducing errors into your config. For every Neovim release I will update this repo along with the community to keep it up to date with the newest versions. + +As I mentioned, this config is meant as a starting point for people new to Neovim who want a familiar IDE experience. The config has a very simple structure that makes it easy to add new plugins. + +### Migration guide to lazy from packer + +Now this config uses `lazy.nvim` as a plugin manager, so if you are migrating from packer you should probably remove +`$HOME/.local/share/nvim` and re-open nvim to re-install the plugins to not face any issues. + +## Install Neovim 0.9 + +You can install Neovim with your package manager e.g. brew, apt, pacman etc.. but remember that when you update your packages Neovim may be upgraded to a newer version. + +If you would like to make sure Neovim only updates when you want it to than I recommend installing from source: + +**NOTE** Verify the required [build prerequisites](https://github.com/neovim/neovim/wiki/Building-Neovim#build-prerequisites) for your system. + +```sh +git clone https://github.com/neovim/neovim.git +cd neovim +git checkout release-0.9 +make CMAKE_BUILD_TYPE=Release +sudo make install +``` + +## Install the config + +Make sure to remove or backup your current `nvim` directory + +```sh +git clone https://github.com/LunarVim/nvim-basic-ide.git ~/.config/nvim +``` + +Run `nvim` and wait for the plugins to be installed + +**NOTE** (You will notice treesitter pulling in a bunch of parsers the next time you open Neovim) + +**NOTE** Checkout this file for some predefined keymaps: [keymaps](https://github.com/LunarVim/nvim-basic-ide/tree/master/lua/keymaps.lua) + +## Get healthy + +Open `nvim` and enter the following: + +``` +:checkhealth +``` + +You'll probably notice you don't have support for copy/paste also that python and node haven't been setup + +So let's fix that + +First we'll fix copy/paste + +- On mac `pbcopy` should be builtin + +- On Ubuntu + + ```sh + sudo apt install xsel # for X11 + sudo apt install wl-clipboard # for wayland + ``` + +Next we need to install python support (node is optional) + +- Neovim python support + + ```sh + pip install pynvim + ``` + +- Neovim node support + + ```sh + npm i -g neovim + ``` + +We will also need `ripgrep` for Telescope to work: + +- Ripgrep + + ```sh + sudo apt install ripgrep + ``` + +--- + +**NOTE** make sure you have [node](https://nodejs.org/en/) installed, I recommend a node manager like [fnm](https://github.com/Schniz/fnm). + +## Fonts + +I recommend using the following repo to get a "Nerd Font" (Font that supports icons) + +[getnf](https://github.com/ronniedroid/getnf) + +## Configuration + +### LSP + +To add a new LSP + +First Enter: + +``` +:Mason +``` + +and press `i` on the Language Server you wish to install + +Next you will need to add the server to this list: [servers](https://github.com/LunarVim/nvim-basic-ide/tree/master/lua/utils/init.lua#L3) +Note: Builtin LSP doesn't contain all lsps from [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#terraform_lsp). + +If you want to install any from there, for example terraform_lsp(which adds more functionality than terraformls, like complete resource listing), + +1. You can add the lsp name in [mason lsp block](https://github.com/LunarVim/nvim-basic-ide/tree/master/user/utils/init.lua#L3-L13) + +```lua +-- lua/utils/init.lua +M.servers = { + "lua_ls", + "cssls", + "html", + "tsserver", + "pyright", + "bashls", + "jsonls", + "yamlls", + "terraform_lsp" -- New LSP +} +``` + +2. Manually install the binary of the lsp and put it in your path by downloading the binary or through your package manager. For terraform_lsp [example](https://github.com/juliosueiras/terraform-lsp/releases) + +### Formatters and linters + +Make sure the formatter or linter is installed and add it to this setup function: [null-ls](https://github.com/LunarVim/nvim-basic-ide/blob/e6b6c96280ca730a2564f2e36050df055acfb1a8/lua/user/null-ls.lua#L22) + +**NOTE** Some are already setup as examples, remove them if you want + +### Plugins + +### You can install new plugins here: [plugins](https://github.com/LunarVim/nvim-basic-ide/tree/master/lua/user) + +Heres the wiki for installing new plugins refer to this: [wiki](https://github.com/LunarVim/nvim-basic-ide/wiki/adding_new_plugins) + +## Plugins + +- [lazy](https://github.com/folke/lazy.nvim) +- [plenary](https://github.com/nvim-lua/plenary.nvim) +- [nvim-autopairs](https://github.com/windwp/nvim-autopairs) +- [Comment.nvim](https://github.com/numToStr/Comment.nvim) +- [nvim-ts-context-commentstring](https://github.com/JoosepAlviste/nvim-ts-context-commentstring) +- [nvim-web-devicons](https://github.com/nvim-tree/nvim-web-devicons) +- [nvim-tree.lua](https://github.com/kyazdani42/nvim-tree.lua) +- [bufferline.nvim](https://github.com/akinsho/bufferline.nvim) +- [bufdelete.nvim](https://github.com/famiu/bufdelete.nvim) +- [lualine.nvim](https://github.com/nvim-lualine/lualine.nvim) +- [toggleterm.nvim](https://github.com/akinsho/toggleterm.nvim) +- [project.nvim](https://github.com/ahmedkhalf/project.nvim) +- [impatient.nvim](https://github.com/lewis6991/impatient.nvim) +- [indent-blankline.nvim](https://github.com/lukas-reineke/indent-blankline.nvim) +- [alpha-nvim](https://github.com/goolord/alpha-nvim) +- [tokyonight.nvim](https://github.com/folke/tokyonight.nvim) +- [nvim-cmp](https://github.com/hrsh7th/nvim-cmp) +- [cmp-buffer](https://github.com/hrsh7th/cmp-buffer) +- [cmp-path](https://github.com/hrsh7th/cmp-path) +- [cmp_luasnip](https://github.com/saadparwaiz1/cmp_luasnip) +- [cmp-nvim-lsp](https://github.com/hrsh7th/cmp-nvim-lsp) +- [cmp-nvim-lua](https://github.com/hrsh7th/cmp-nvim-lua) +- [LuaSnip](https://github.com/L3MON4D3/LuaSnip) +- [friendly-snippets](https://github.com/rafamadriz/friendly-snippets) +- [mason.nvim](https://github.com/williamboman/mason.nvim) +- [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) +- [mason-lspconfig.nvim](https://github.com/williamboman/mason-lspconfig.nvim) +- [null-ls.nvim](https://github.com/jose-elias-alvarez/null-ls.nvim) +- [vim-illuminate](https://github.com/RRethy/vim-illuminate) +- [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim) +- [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) +- [gitsigns.nvim](https://github.com/lewis6991/gitsigns.nvim) +- [nvim-dap](https://github.com/mfussenegger/nvim-dap) +- [nvim-dap-ui](https://github.com/rcarriga/nvim-dap-ui) +- [DAPInstall.nvim](https://github.com/ravenxrz/DAPInstall.nvim) +- [which-key.nvim](https://github.com/folke/which-key.nvim) + +--- + +> The computing scientist's main challenge is not to get confused by the complexities of his own making. + +\- Edsger W. Dijkstra |