You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Handy and Smoothy: There will always be a panel to remind you
when you forget your key settings. There will always be a short keystroke to help
you get to the place you want to jump to. There will always…
Powerful coding experience: nvim-lspconfig powered great LSP experient.
Fancy looking: Well designed, denoised, uncluttered UI. Talk is cheap, see the gallery.
Great Performance: Lazy loading anywhere, you will never have to worry about accidental opening of a file larger than 10000 loc can freeze your terminal.
Getting Start
This configuration is compatible with neovim 0.10+ version.
Diagnostic error/warning/hint are highlighted with undercurl, please use kitty, wezterm
or anyother terminal that support undercurl.
If you are using tmux, to have a correct display, you can try my configuration below:
# (MUST) Enable 256 color for tmuxset -g default-terminal "tmux-256color"# (Optional, choose any of them)# Enable true color and undercurl for weztermset -as terminal-features ",wezterm*:RGB"set -as terminal-features ",wezterm*:usstyle"# Same as above, but for kitty. (kitty doesn't support Windows so I have to keep two configuration here)set -as terminal-features ",kitty*:RGB"set -as terminal-features ",kitty*:usstyle"# Same as above, but for SSH. This is useful because I am using `alias ssh="TERM=xterm-256color exec ssh"`set -as terminal-features ",xterm-256color*:RGB"set -as terminal-features ",xterm-256color*:usstyle"set -as terminal-overrides ",xterm*:Tc"# (MUST) This hijack the neovim undercurl char sequence, to avoid tmux escape them.set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm'
Project Structure
after/ftplugin/<lang>.lua: missing default configuration for filetypes
vsnip: Snippets are placed in here.
lua: the configuration core
key-mapping.lua: my modification to the built-in key mappings
pack.lua: script to download lazy.nvim plugin manager
core/: my modification to the built-in options and auto commands
completion/: plugins and configuration for LSP and vim command completion
git/: plugin and configuration for using git in Neovim
lang/: plugins and configuration for using LSP server and get diagnostic in Neovim
libs/: functions that I don't want to write twice
tools/: miscellaneous plugins that can enhance editing experience
treesitter/: plugins for text object highlight and editing
ui/: plugins for decorating the neovim
ftdetect: List of script to help neovim identify filetype for some file, not important.
indent: List of script to help neovim properly set indentation, not important.
syntax: Additional syntax detection for some file type, not important.
Treesitter parsers in nix
For normal user: make sure gcc is installed, then run :TSInstall <language> to compile and install corresponding treesitter plugin
For nix user: you can add this repository as an overlay and use the pre-bundled neovim:
# flake.nix{description="Simple home-manager neovim configuration";inputs={nixpkgs.url="github:NixOS/nixpkgs/nixos-unstable";my-neovim.url="github:Avimitin/nvim";home-manager={url="github:nix-community/home-manager";inputs.nixpkgs.follows="nixpkgs";};};outputs={self,nixpkgs,flake-utils,home-manager,my-neovim}: {homeConfiguration=home-manager.lib.homeManagerConfiguration{# import my overlay, it will add a new `neovim-nightly` derivation into your nixpkgspkgs=importnixpkgs{system="x86_64-linux"overlays=[my-neovim.overlays.default];};modules=[({pkgs}: {# Then add the pre-bundled neovim into your home configurationhome.packages=[pkgs.neovim-nightly];})];};};}
Gallery
Utilities
Easy in-file jump
Markdown Utils
Markdown Preview
Table
Coding Utils
LSP Progress
Symbol Tree
Code Completion
Command Completion
Errorlens Like diagnostic
Signature Help
Code Actions
Diagnostic
Code navigate
Project grep
Symbol search
File Manager
neotree
Find file
Themes
Kanagawa Theme
License
This configuration since commit 912416ae9c4b55501b23a91d774b567ba8697dd1 are
licenced under the Apache 2.0 license.