# Neovim Setup Autocompletion and "code intellisense" is provided by the LSP client built into Neovim. The following language servers are configured: * tsserver * eslint * cssls * html ## Requirements * Neovim v0.8 or greater. * git. * [make](https://www.gnu.org/software/make/), the build tool. * [npm cli](https://docs.npmjs.com/cli/v8/commands/npm). Javascript package manager. * [nodejs](https://nodejs.org/es/). Javascript runtime. Required by the language servers listed above. * [ripgrep](https://github.com/BurntSushi/ripgrep). Improves project wide search speed. * [fd](https://github.com/sharkdp/fd). Improves file search speed. * A patched font to display icons. I hear [nerdfonts](https://www.nerdfonts.com/) has a good collection. ## Keybindings Leader key: `Space`. | Mode | Key | Action | | --- | --- | --- | | Normal | `h` | Go to first non empty character in line. | | Normal | `l` | Go to last non empty character in line. | | Normal | `a` | Select all text. | | Normal | `cp` | Copy selected text to clipboard. | | Normal | `cv` | Paste clipboard content. | | Normal | `w` | Save file. | | Normal | `bq` | Close current buffer. | | Normal | `bc` | Close current buffer while preserving the window layout. | | Normal | `bl` | Go to last active buffer. | | Normal | `?` | Search oldfiles history. | | Normal | `` | Search open buffers. | | Normal | `ff` | Find file in current working directory. | | Normal | `fg` | Search pattern in current working directory. Interactive "grep search". | | Normal | `fd` | Search diagnostics in current file. | | Normal | `fs` | Search pattern in current file. | | Normal | `e` | Open file explorer. | | Normal | `` | Toggle the builtin terminal. | | Normal | `K` | Displays hover information about the symbol under the cursor. | | Normal | `gd` | Jump to the definition. | | Normal | `gD` | Jump to declaration. | | Normal | `gi` | Lists all the implementations for the symbol under the cursor. | | Normal | `go` | Jumps to the definition of the type symbol | | Normal | `gr` | Lists all the references. | | Normal | `gs` | Displays a function's signature information. | | Normal | `` | Renames all references to the symbol under the cursor. | | Normal | `` | Format code in current buffer. | | Normal | `` | Selects a code action available at the current cursor position. | | Visual | `` | Selects a code action available in the selected text. | | Normal | `gl` | Show diagnostics in a floating window. | | Normal | `[d` | Move to the previous diagnostic. | | Normal | `]d` | Move to the next diagnostic. | ### Autocomplete keybindings | Mode | Key | Action | | --- | --- | --- | | Insert | `` | Move to previous item. | | Insert | `` | Move to next item. | | Insert | `` | Move to previous item. | | Insert | `` | Move to next item. | | Insert | `` | Scroll up in documentation window. | | Insert | `` | Scroll down in documentation window. | | Insert | `` | Cancel completion. | | Insert | `` | Confirm completion. | | Insert | `` | Confirm completion. | | Insert | `` | Go to next placeholder in snippet. | | Insert | `` | Go to previous placeholder in snippet. | | Insert | `` | If completion menu is open, go to next item. Else, open completion menu. | | Insert | `` | If completion menu is open, go to previous item. | ## Plugin list | Name | Description | | --- | --- | | [paq-nvim](https://github.com/savq/paq-nvim) | Plugin manager. | | [gruvbox.nvim](https://github.com/ellisonleao/gruvbox.nvim) | Gruvbox colorscheme for Neovim. | | [nvim-web-devicons](https://github.com/kyazdani42/nvim-web-devicons) | Helper functions to show icons. | | [nvim-colorizer.lua](https://github.com/norcalli/nvim-colorizer.lua) | The fastest Neovim colorizer. | | [lualine.nvim](https://github.com/nvim-lualine/lualine.nvim) | Pretty statusline. | | [indent-blankline.nvim](https://github.com/lukas-reineke/indent-blankline.nvim) | Shows indent guides in current file. | | [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim) | Fuzzy finder. | | [telescope-fzf-native.nvim](https://github.com/nvim-telescope/telescope-fzf-native.nvim) | Extension for telescope. Allows fzf-like syntax in searches. | | [gitsigns.nvim](https://github.com/lewis6991/gitsigns.nvim) | Shows indicators in gutter based on file changes detected by git. | | [vim-fugitive](https://github.com/tpope/vim-fugitive) | Git integration into Neovim/Vim. | | [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) | Configures treesitter parsers. Provides modules to manipulate code. | | [nvim-treesitter-textobjects](https://github.com/nvim-treesitter/nvim-treesitter-textobjects) | Creates textobjects based on treesitter queries. | | [telescope-file-browser.nvim](https://github.com/nvim-telescope/telescope-file-browser.nvim) | File Browser extension for telescope.nvim. | | [Comment.nvim](https://github.com/numToStr/Comment.nvim) | Toggle comments. | | [nvim-surround](https://github.com/kylechui/nvim-surround) | Add/change/delete surrounding delimiter pairs with ease. | | [nvim-autopairs](https://github.com/windwp/nvim-autopairs) | Autopairs for neovim. | | [hop.nvim](https://github.com/phaazon/hop.nvim) | Neovim motions on speed! | | [plenary.nvim](https://github.com/nvim-lua/plenary.nvim) | Collection of modules. Used internaly by other plugins. | | [toggleterm.nvim](https://github.com/akinsho/toggleterm.nvim) | Manage terminal windows easily. | | [mason.nvim](https://github.com/williamboman/mason.nvim) | Portable package manager for Neovim. | | [mason-lspconfig.nvim](https://github.com/williamboman/mason-lspconfig.nvim) | Integrates nvim-lspconfig and mason.nvim. | | [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) | Quickstart configs for Neovim's LSP client. | | [lspkind.nvim](https://github.com/onsails/lspkind.nvim) | vscode-like pictograms for neovim lsp completion items. | | [lsp-format.nvim](https://github.com/lukas-reineke/lsp-format.nvim) | A wrapper around Neovims native LSP formatting. | | [trouble.nvim](https://github.com/folke/trouble.nvim) | A pretty diagnostics, references, telescope results, quickfix and location list. | | [nvim-dap](https://github.com/mfussenegger/nvim-dap) | Debug Adapter Protocol client implementation for Neovim | | [nvim-dap-virtual-text](https://github.com/theHamsta/nvim-dap-virtual-text) | Virtual text support to nvim-dap | | [nvim-dap-ui](https://github.com/rcarriga/nvim-dap-ui) | A UI for nvim-dap | | [nvim-cmp](https://github.com/hrsh7th/nvim-cmp) | Autocompletion engine. | | [cmp-buffer](https://github.com/hrsh7th/cmp-buffer) | nvim-cmp source. Suggest words in the current buffer. | | [cmp-path](https://github.com/hrsh7th/cmp-path) | nvim-cmp source. Show suggestions based on file system paths. | | [cmp_luasnip](https://github.com/saadparwaiz1/cmp_luasnip) | nvim-cmp source. Show suggestions based on installed snippets. | | [cmp-nvim-lsp](https://github.com/hrsh7th/cmp-nvim-lsp) | nvim-cmp source. Show suggestions based on LSP servers queries. | | [cmp-nvim-lua](https://github.com/hrsh7th/cmp-nvim-lua) | nvim-cmp source for nvim lua. | | [LuaSnip](https://github.com/L3MON4D3/LuaSnip) | Snippet engine. | | [friendly-snippets](https://github.com/rafamadriz/friendly-snippets) | Collection of snippets. | | [telekasten.nvim](https://github.com/renerocksai/telekasten.nvim) | A Neovim (lua) plugin for working with a markdown zettelkasten / wiki and mixing it with a journal | | [calendar-vim](https://github.com/renerocksai/calendar-vim) | calendar in vimscript |