Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/harrisoncramer/nvim

My personal Neovim configuration.
https://github.com/harrisoncramer/nvim

configuration neovim vim

Last synced: 28 days ago
JSON representation

My personal Neovim configuration.

Awesome Lists containing this project

README

        

# Neovim Configuration

![Editor](https://hjc-public.s3.amazonaws.com/nvim1.png?)
![Terminal](https://hjc-public.s3.amazonaws.com/nvim2.png?)
![Debugging](https://harrisoncramer.me/static/6e0f346fac366e6835391c95b69aa43a/d61c2/nvim-dap-ui-go.png?)

# About

This repository contains my configurations, including key mappings, plugins, and other settings for Neovim. I'm primarily working day-to-day in VueJS, React, Typescript, Golang, Lua, and Clojure.

# Neovim Version

Important: I'm on the latest Neovim release (0.9) and many of these plugins will break if on an older version.

# Features

- Plugins managed with lazy.nvim
- Syntax highlighting with treesitter
- LSPs installed via Mason and configured via lspconfig
- Debuggers installed and configured with nvim-dap
- fterm for terminal integration
- fzf-lua for search
- neogit for git management
- gitlab.nvim for Gitlab integration
- diffview git branch/commit/diff viewing
- lualine for status bar
- lsp-format for formatting
- kanagawa colorscheme
- spectre for project-wide regexes

# Dependencies

There are a few dependencies for this editor configuration that cannot be installed within Neovim. I've detailed them below, installation instructions _assume an Ubuntu OS_, although installation on other operating systems should be straightforward. Most of them are required for LSPs or Debuggers to work.

1. Git version 2.36 or greater

```bash
sudo add-apt-repository ppa:git-core/ppa -y
sudo apt-get update -y
sudo apt install git -y
```

2. `npm` and `node`, which are used to install some of the LSPs and Debuggers. I recommend installing node via NVM (node version manager). You may need to resource your `.bashrc`/`.zshrc` after installing NVM for the command to be available in your path.

```bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
nvm install 20.5.0
```

3. The Treesitter CLI, which is required for syntax highlighting

```bash
npm install -g tree-sitter-cli
```

4. Golang (required for Golang Debugger + LSP). On Ubuntu:

```bash
sudo add-apt-repository ppa:longsleep/golang-backports -y
sudo apt update -y
sudo apt install golang-go -y
```

5. Zip/Unzip commands (required to unpack Typescript Debugger)

```bash
sudo apt install zip -y
```

6. The compiler `gcc`

```bash
sudo apt update -y
sudo apt install build-essential -y
```

7. ripgrep for fuzzy finding

```bash
curl -LO https://github.com/BurntSushi/ripgrep/releases/download/13.0.0/ripgrep_13.0.0_amd64.deb
sudo dpkg -i ripgrep_13.0.0_amd64.deb
```

8. python3 and pynvim for wilder
```bash
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update -y
sudo apt install python3.11 -y
sudo apt install python3-pip -y
pip3 install --upgrade pynvim
```

9. bun for faster language servers (tailwindcss and ts_ls)
```bash
curl -fsSL https://bun.sh/install | bash
```

10. gnu-sed (for the spectre plugin)

# Quickstart

1. Install the required dependencies listed above.
2. Clone this repository to your Neovim configuration path: `git clone https://github.com/harrisoncramer/nvim.git ~/.config/nvim`
3. Open Neovim. The plugin installation should start automatically; so should the LSP and Debugger installations.
4. Run `:UpdateRemotePlugins` to update Wilder

Please be patient when you first open up Neovim, it is installing many depndencies the first time it starts! I'd recommend going and getting a cup of coffee, the process can take ~5 minutes to install all of the debuggers, LSPs, and treesitter language parsers.

You can see the status of the plugin installation with the `:Lazy` command. This will open automatically. You can see the status of the LSP and Debugger installations with the `:Mason` command.