nvim
nvim copied to clipboard
One editor to roll them all. (GotoDef FindRef Completion Snippet Format Lint Refactor Test Debug Repl Task)
My love, you're the unsolved wave, I'm the naked island.
Introduction
Feature-rich, beautiful and fast neovim config.
- Aesthetic and beautiful appearance
- Blazing fast startup time
- Builtin startup time check
- Lazy load plugins as much as possible
- Reduce unnecessary plugins by builtin autocmd and function
- Coding friendly
- Goto definition/reference and code completion powered by LSP
- Highlight and in-file navigation powered by Treesitter
- Git: git related action
- Search: telescope related action
- Discoverable UX: out of box and easy to use
- Spacemacs inspired keybinding scheme - ergonomics, mnemonics and consistency
- Modular config: extensible and easy to hack
- Every piece of config can be reload
- Decouple plugins from core config and core keymappings
- Sane defaults for each plugin
- Pin core plugins for snapshot and rollback
- For all major platforms: Windows/Linux/macOS/BSD
Features
Langauges
| Lang | LSP | Format | Lint | Test | Debug |
|---|---|---|---|---|---|
| Zig | zls | ||||
| Rust | rust_analyzer | ||||
| C/C++ | clangd | ||||
| Go | gopls | ||||
| Java | jdtls | google_java_format | |||
| Lua | lua_ls | stylua | selene | ||
| Python | pyright | black | flake8 | ||
| Vim | vimls | ||||
| Sh | bashls | shfmt | shellcheck | ||
| Yaml | yamlls | ||||
| Json | jsonls |
see language
Keymappings
see shortcut
Modules
see plugins.lua
- BWT
- LSP
- UI
- appearance
- basic
- change
- code
- edit
- file
- find
- git
- lang
- neovim
- telescope
- theme
- tool
- write
GUI
For keymappings of these neovim gui, see shortcut
init.lua
ginit.vim
- [x] neovide
- [x] fvim
- [x] neovim-qt
- [ ] neovim-gtk
- [ ] vimr
Performance
Start up in 82ms.
see startup time
Update
Pin plugins to pined commit version
# update to latest commit of pin plugins: xy.plugins.pins()
nvim --headless -c 'luafile ./utils/generate_new_lockfile.lua'
Personal
Local machine scope config for overriding defaults without disturb git repo
<leader>ylto open local config, which is a copy of template- Only language-server for now.
- Be able to customize every piece of core/plugin config through
xymagic! (coming soom)
Appearance
Structure
nvim
├── autoload/
│ └── yo/
│ ├── fn.vim
│ ├── fold.vim
│ └── redir.vim
├── ftplugin/
│ ├── c.vim
│ ├── gitcommit.vim
│ ├── help.vim
│ ├── java.vim
│ ├── json.vim
│ ├── kitty.vim
│ ├── lua.vim
│ ├── markdown.vim
│ ├── qf.vim
│ ├── text.vim
│ ├── txt.vim
│ └── vim.vim
└── lua
└── young
│ ├── autocmd/
│ │ ├── core.lua
│ │ └── init.lua
│ ├── cfg/
│ │ ├── global.lua
│ │ ├── init.lua
│ │ ├── option.lua
│ │ ├── quickfix.lua
│ │ └── tabline.lua
│ ├── gui/
│ │ ├── firenvim.lua
│ │ ├── font.lua
│ │ ├── fvim.lua
│ │ ├── goneovim.lua
│ │ ├── init.lua
│ │ ├── map.lua
│ │ ├── neovide.lua
│ │ ├── nvim_qt.lua
│ │ ├── nvui.lua
│ │ ├── transparency.lua
│ │ └── vscode.lua
│ ├── key/
│ │ ├── init.lua
│ │ ├── leader_normal.lua
│ │ ├── leader_visual.lua
│ │ ├── normal.lua
│ │ ├── visual.lua
│ │ └── which_key.lua
│ ├── lang/
│ │ ├── java.lua
│ │ ├── java_.lua
│ │ └── python.lua
│ ├── lsp/
│ │ ├── null_ls/
│ │ │ └── linters.lua
│ │ ├── providers/
│ │ │ ├── clangd.lua
│ │ │ ├── jdtls.lua
│ │ │ ├── jsonls.lua
│ │ │ ├── pylsp.lua
│ │ │ ├── pyright.lua
│ │ │ ├── sumneko_lua.lua
│ │ │ └── yamlls.lua
│ │ ├── common.lua
│ │ ├── config.lua
│ │ ├── handler.lua
│ │ ├── init.lua
│ │ ├── installer.lua
│ │ ├── misc.lua
│ │ └── null_ls.lua
│ ├── mod/
│ │ ├── alpha/
│ │ │ ├── init.lua
│ │ │ └── screen.lua
│ │ ├── feline/
│ │ │ ├── init.lua
│ │ │ ├── nv_ide.lua
│ │ │ └── nvchad.lua
│ │ ├── galaxyline/
│ │ │ └── init.lua
│ │ ├── lualine/
│ │ │ ├── theme/
│ │ │ │ └── vscode.lua
│ │ │ ├── apl.lua
│ │ │ ├── bubbles.lua
│ │ │ ├── evil.lua
│ │ │ ├── evil_v.lua
│ │ │ ├── init.lua
│ │ │ └── slanted.lua
│ │ ├── telescope/
│ │ │ ├── actions.lua
│ │ │ ├── finder.lua
│ │ │ ├── init.lua
│ │ │ └── view.lua
│ │ ├── asterisk.lua
│ │ ├── autopairs.lua
│ │ ├── barbar.lua
│ │ ├── bqf.lua
│ │ ├── bufferline.lua
│ │ ├── cinnamon.lua
│ │ ├── cmp.lua
│ │ ├── colorizer.lua
│ │ ├── comment.lua
│ │ ├── copilot.lua
│ │ ├── dial.lua
│ │ ├── easy_align.lua
│ │ ├── fidget.lua
│ │ ├── filetype.lua
│ │ ├── fine_cmd.lua
│ │ ├── fzf.lua
│ │ ├── git_conflict.lua
│ │ ├── gitlinker.lua
│ │ ├── gitsigns.lua
│ │ ├── gps.lua
│ │ ├── hop.lua
│ │ ├── illuminate.lua
│ │ ├── indent_blankline.lua
│ │ ├── jabs.lua
│ │ ├── lightbulb.lua
│ │ ├── lightspeed.lua
│ │ ├── lir.lua
│ │ ├── lsp_lines.lua
│ │ ├── lsp_signature.lua
│ │ ├── matchup.lua
│ │ ├── minimap.lua
│ │ ├── neoclip.lua
│ │ ├── neorg.lua
│ │ ├── neoscroll.lua
│ │ ├── notify.lua
│ │ ├── nvim_tree.lua
│ │ ├── package_info.lua
│ │ ├── persistence.lua
│ │ ├── project.lua
│ │ ├── rest.lua
│ │ ├── scrollview.lua
│ │ ├── searchbox.lua
│ │ ├── session_manager.lua
│ │ ├── smart_splits.lua
│ │ ├── specs.lua
│ │ ├── spectre.lua
│ │ ├── tabline.lua
│ │ ├── todo_comments.lua
│ │ ├── toggleterm.lua
│ │ ├── treesitter.lua
│ │ ├── trouble.lua
│ │ ├── wilder.lua
│ │ ├── window_picker.lua
│ │ ├── yabs.lua
│ │ ├── zen.lua
│ │ └── ZFVimIM.lua
│ ├── tool/
│ │ ├── blame.lua
│ │ ├── demo.lua
│ │ ├── init.lua
│ │ └── setup.lua
│ ├── util/
│ │ ├── init.lua
│ │ └── jsonify.lua
│ ├── init.lua
│ ├── packer.lua
│ ├── packer_compiled.lua
│ └── plugins.lua
├── plugin/
│ ├── abbr.vim
│ ├── autocmd.lua
│ ├── func.vim
│ ├── helper.vim
│ ├── mappings.lua
│ └── vim-ripgrep.vim
TODO
see todo
Acknowledge
see reference