https://github.com/jellydn/nvim-ide
Personal IDE config for Neovim
https://github.com/jellydn/nvim-ide
ide nvim
Last synced: 6 months ago
JSON representation
Personal IDE config for Neovim
- Host: GitHub
- URL: https://github.com/jellydn/nvim-ide
- Owner: jellydn
- License: gpl-3.0
- Created: 2023-01-17T02:23:13.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-12-15T05:41:16.000Z (almost 2 years ago)
- Last Synced: 2025-03-28T10:50:30.556Z (7 months ago)
- Topics: ide, nvim
- Language: Lua
- Homepage:
- Size: 76.2 KB
- Stars: 5
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# My Personal IDE config for Neovim
[![IT Man - Talk #33 NeoVim as IDE [Vietnamese]](https://i.ytimg.com/vi/dFi8CzvqkNE/hqdefault.jpg)](https://www.youtube.com/watch?v=dFi8CzvqkNE)
## Install Neovim
The easy way is using [MordechaiHadad/bob: A version manager for neovim](https://github.com/MordechaiHadad/bob).
```sh
bob install stable
bob use stable
```## Install the config
Make sure to remove or move your current `nvim` directory
```sh
git clone https://github.com/jellydn/nvim-ide.git ~/.config/nvim
```Run `nvim` and wait for the plugins to be installed
**NOTE** Checkout this file for some predefined keymaps: [keymaps](https://github.com/jellydn/nvim-ide/blob/master/lua/user/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/blob/0e65f504f634026f5765ce6a092612d385d6306d/lua/user/lsp/mason.lua#L1)
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/blob/f03955dc1e5879164f9229d44d98ca81a948cbfb/lua/user/lsp/mason.lua#L1-L10)
```lua
-- lua/usr/lsp/mason.lua
local servers = {
"sumneko_lua",
"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/jellydn/nvim-ide/blob/master/lua/user/lsp/null-ls.lua)
**NOTE** Some are already setup as examples, remove them if you want
### Plugins
You can install new plugins here: [lazy](https://github.com/jellydn/nvim-ide/blob/master/lua/config/lazy.lua)
---
## Plugins
- [folke/lazy.nvim](https://github.com/folke/lazy.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/kyazdani42/nvim-web-devicons)
- [nvim-tree.lua](https://github.com/kyazdani42/nvim-tree.lua)
- [bufferline.nvim](https://github.com/akinsho/bufferline.nvim)
- [vim-bbye](https://github.com/moll/vim-bbye)
- [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-nvim-lsp](https://github.com/hrsh7th/cmp-nvim-lsp)
- [tzachar/cmp-tabnine](https://github.com/tzachar/cmp-tabnine)
- [friendly-snippets](https://github.com/rafamadriz/friendly-snippets)
- [LuaSnip](https://github.com/L3MON4D3/LuaSnip)
- [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)
- [glepnir/lspsaga.nvim](https://github.com/glepnir/lspsaga.nvim)
- [lukas-reineke/lsp-format.nvim](https://github.com/lukas-reineke/lsp-format.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)
- [kylechui/nvim-surround](https://github.com/kylechui/nvim-surround)
- [stevearc/aerial.nvim](https://github.com/stevearc/aerial.nvim)
- [github/copilot.vim](https://github.com/github/copilot.vim)
- [simrat39/rust-tools.nvim](https://github.com/simrat39/rust-tools.nvim)
- [crispgm/nvim-go](https://github.com/crispgm/nvim-go)
- [folke/trouble.nvim](https://github.com/folke/trouble.nvim)
- [folke/todo-comments.nvim](https://github.com/folke/todo-comments.nvim)