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

https://github.com/ye-junzhe/BetterNvim

Coding in Neovim elegently
https://github.com/ye-junzhe/BetterNvim

ide lua neovim vim

Last synced: 7 months ago
JSON representation

Coding in Neovim elegently

Awesome Lists containing this project

README

          


BetterNvim



GitHub repo size
GitHub last commit
GitHub top language


📦 Installation

## Preview

![BetterNvim Dashboard](https://github.com/ye-junzhe/Images/blob/main/BetterNvim/pic/Dashboard.png?raw=true)
![BetterNvim Coding](https://github.com/ye-junzhe/Images/blob/main/BetterNvim/pic/Coding.png?raw=true)
![BetterNvim HoverDoc](https://github.com/ye-junzhe/Images/blob/main/BetterNvim/pic/HoverDoc.png?raw=true)
![BetterNvim Errors](https://github.com/ye-junzhe/Images/blob/main/BetterNvim/pic/Errors.png?raw=true)
![BetterNvim FloatTerm](https://github.com/ye-junzhe/Images/blob/main/BetterNvim/pic/FloatTerm.png?raw=true)

- [Preview](#preview)
- [Introduction](#introduction)
- [Installation](#installation)
- [Prerequisites](#prerequisites)
- [Glyphs](#glyphs)
- [Optional: Backup existing nvim config](#optional-backup-existing-nvim-config)
- [Clone the repository](#clone-the-repository)
- [Plugins and Lsps and Highlighting](#plugins-and-lsps-and-highlighting)
- [Plugins](#plugins)
- [**Initialization**](#initialization)
- [Lsps](#lsps)
- [Syntax highlighting](#syntax-highlighting)
- [Keybindings 🎥](#keybindings-🎥)
- [Basic](#basic)

## Introduction

This repo is to setup a modern IDE style coding experience in Neovim.

- Supported OS
- macOS(Tested on the latest macOS)
- GNU/Linux(Tested on Debian 12 Bookworm)
- Windows Subsystem for Linux(Tested on WSL Ubuntu)

- Features:
- VSCode-like Auto-completion setup
- Plugin Manager: [Lazy.nvim](https://github.com/folke/lazy.nvim)
- Mason for native Neovim LSP management
- Tree-sitter for syntax highlighting
- Plugins: Lspsaga, Barbar, Lualine, Nvim-tree, Nvim-cmp, Todotree, Neogit ...
- **[Neovide](https://neovide.dev/) recommended** for much smoother GUI animation

## Installation

### Prerequisites

- Neovim >= 0.10.0
- CMake
- Make
- fzf
- ripgrep
- fd-find
- node
- python3
- tree-sitter-cli (Linux)

### Glyphs

To show glyphs properly, please install Nerd Fonts first, and set your terminal to use it

- https://www.nerdfonts.com/

### Optional: Backup existing nvim config

```bash
mv $HOME/.config/nvim $HOME/.config/nvim.old
```

### Clone the repository

```bash
git clone --depth 1 https://github.com/ye-junzhe/BetterNvim.git $HOME/.config/nvim
```

### Additional step for Linux

If Neovim on your machine is compiled from source, set a hard link to /usr/bin, for sudoers to find it

```
ln /path/to/nvim /usr/bin/nvim
```

## Plugins and Lsps and Highlighting

### Plugins

### **Initialization**

- Enter `:Lazy`, then press `U` to update all the plugins
- Enter `:MasonUpdate` else there won't be any packages showing in the Mason panel
- Enter `TSUpdate` to update all Tree-sitter parsers

### Lsps

- `:Mason` => Install Lsps(g? for help)
- All configs in [this folder](./lua/Junzhe/plugins/lsp/)
- Mainly focusing on Rust development

### Syntax highlighting

- `:TSInstall` => Install Tree-sitter highlighting for specific language
- Configs in [treesitter.lua](./lua/Junzhe/plugins/nvim-treesitter.lua)

## Keybindings 🎥

Keybindings at [keymaps.lua](./lua/Junzhe/core/keymaps.lua)
And the rest of are in the corresponding *.lua file of the plugin

`` = `Command` on macOS

**The `` key has been changed to ``**

### Basic

```bash
e => nvim-tree (g? for help)
i => Change directory
I => Chanege to the parent folder
o => Unfold
O => Fold

# Telescope
ff => File search
fr => Recent file search
fw => Word search in current buffer
fs => Word search in all files
ft => Todo-Tree

# Lspsaga
gh => Hover doc
gd => Definition(In definition window, o/i => edit)
gf => Find definition and references
oo => show symbols(silimar to tagbar)
a => Code actions
t(open)/tt(close) || ctrl-t => Float Term
dw => Work space diagnostics
db => Buf diagnostics

# Barbar
Shift+h => Switch left
Shift+l => Switch right
Shift+f => Switch buffer forword
Shift+b => Switch buffer backword
mp => BufferPick
ctrl-p => BufferPin
ctrl-c => BufferCloseAllButCurrentOrPinned

# Navigation
ctrl + h/j/k/l => navigate windows

# Hop
j => jump lines
ml => jump words

# Save and quit
W => Save
Q => Quit

# Bookmark
mm => Create and delete
mi => Add annotation
mc => Clear bookmarks
mx => Clear in all buffers
mn => Next bookmark
ma => Show all

# Neogit(Magit clone for Neovim)
gg => Open Neogit
```