``` _..._ .' (_`. _ __ ___ : . : | | _ _ _ __ __ _ _ _\ \ / (_)_ __ ___ :) () : | | | | | | '_ \ / _` | '__\ \ / /| | '_ ` _ \ `. . .' | |__| |_| | | | | (_| | | \ V / | | | | | | | `-...-' |_____\__,_|_| |_|\__,_|_| \_/ |_|_| |_| |_| ``` [![GitHub license](https://img.shields.io/github/license/ChristianChiarulli/LunarVim)](https://github.com/ChristianChiarulli/LunarVim/blob/master/LICENSE) [![Open Source? Yes!](https://badgen.net/badge/Open%20Source%20%3F/Yes%21/blue?icon=github)](https://github.com/ChristianChiarulli/lunarvim) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) Patreon donate button follow on Twitter ![LunarVim Demo](./utils/media/demo.png) 1. This project aims to help one transition away from VSCode, and into a superior text editing experience. (Just making this clear) 2. This is also a community project, if you would like to see support for a feature or [language](https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md) consider making a PR. 3. This project will do it's best to include core features you would expect from a modern IDE, while making it easy to add or remove what the user wants. ## Install In One Command! Make sure you have the newest version of Neovim ``` bash bash <(curl -s https://raw.githubusercontent.com/ChristianChiarulli/lunarvim/master/utils/installer/install.sh) ``` After installation run `nvim` and then `:PackerInstall` ## Get the latest version of Neovim ```bash cd ~ sudo rm -r neovim git clone https://github.com/neovim/neovim cd neovim sudo make CMAKE_BUILD_TYPE=Release install cd ~ sudo rm -r neovim ``` or if you are on Arch you can get it from the AUR ```bash yay -S neovim-nightly-git ``` ## Clipboard Support - On Mac `pbcopy` should be built-in - Ubuntu ```bash sudo apt install xsel ``` - Arch ```bash sudo pacman -S xsel ``` - WSL2 Make sure ~/bin is in your path in this case. ```bash curl -sLo/tmp/win32yank.zip https://github.com/equalsraf/win32yank/releases/download/v0.0.4/win32yank-x64.zip unzip -p /tmp/win32yank.zip win32yank.exe > /tmp/win32yank.exe chmod +x /tmp/win32yank.exe mv /tmp/win32yank.exe ~/bin ``` ## LSP To install a supported language server: ``` bash :LspInstall ``` Most common languages should be supported out of the box, if yours is not I would welcome a PR For a more in depth LSP support: [link](https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md) ## Useful Programs LunarVim depends on the following: ``` bash ranger ueberzug ripgrep pynvim neovim-remote ``` ## EFM server In order for linters and formatters to work you will need to install `efm-langserver` ```vim :LspInstall efm ``` ## Formatters and Linters **Python** ``` bash pip3 install --user flake8 pip3 install --user yapf ``` **Lua** ``` bash luarocks install --server=https://luarocks.org/dev luaformatter ``` **Yaml, Json, Javascript, HTML, CSS** ``` bash npm install -g prettier ``` **Markdown** ``` bash pandoc ``` ## De-bugging To set up your particular debugger, look here: [link](https://github.com/mfussenegger/nvim-dap/wiki/Debug-Adapter-installation) ## VSCodium I recommend you support Free/Libre versions if you plan to use VSCode: - [VSCodium](https://vscodium.com/) - Article to get you set up with VSCodium: [link](https://www.chrisatmachine.com/Neovim/22-vscodium-neovim/) After installing the [Neovim extension](https://github.com/asvetliakov/vscode-neovim) in VSCode I recommend using this alongside the VSCode [which-key](https://github.com/VSpaceCode/vscode-which-key) extension You will also need `settings.json` and `keybindings.json` which can be found in utils/vscode\_config Point the nvim path to your `nvim` binary Point your `init.vim` path to: ``` vim $HOME/.config/nvim/vimscript/lv-vscode/init.vim ``` ## TODO **HIGH PRIORITY** - Move user config into `config.lua` ts-comment string for react - From here I will update for bug fixes and implement low priority features when I have time - different key to advance through snippets **LOW PRIORITY** - vim vsnips dir should be co-located with config - list all binaries needed for formatters and linters (one day add in wiki) - Implement what I can from this java config: [link](https://github.com/mfussenegger/nvim-jdtls/wiki/Sample-Configurations) - better ui for code actions - formatting - setup junit tests for java - look into emmet-ls - vim ult test - which-key all in lua - what is `fzy` - https://github.com/pwntester/octo.nvim - configure surround - Implement this for typescript https://github.com/jose-elias-alvarez/nvim-lsp-ts-utils - look into tabnine **PLUGIN BUGS** REACT COMMENTING IS A NIGHTMARE (the filetype is just not recognized idk why)