{"id":13486585,"url":"https://github.com/Avimitin/nvim","last_synced_at":"2025-03-27T21:30:36.775Z","repository":{"id":37627808,"uuid":"331929717","full_name":"Avimitin/nvim","owner":"Avimitin","description":"Handy, maintainable, multi-languages supported neovim configuration.","archived":false,"fork":false,"pushed_at":"2025-03-20T06:52:52.000Z","size":22153,"stargazers_count":270,"open_issues_count":0,"forks_count":48,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-24T00:57:57.501Z","etag":null,"topics":["dotfile","dotfiles","editor","ide","linux","lua","neovim","neovim-config","nvim","nvim-cmp","nvim-config","telescope","vim","vimrc","vscode"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Avimitin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-22T11:44:44.000Z","updated_at":"2025-03-20T06:52:55.000Z","dependencies_parsed_at":"2023-02-18T05:01:04.022Z","dependency_job_id":"d02842bd-a094-4f9d-a595-ae0e2e95c055","html_url":"https://github.com/Avimitin/nvim","commit_stats":null,"previous_names":[],"tags_count":98,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Avimitin%2Fnvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Avimitin%2Fnvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Avimitin%2Fnvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Avimitin%2Fnvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Avimitin","download_url":"https://codeload.github.com/Avimitin/nvim/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245927101,"owners_count":20695169,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotfile","dotfiles","editor","ide","linux","lua","neovim","neovim-config","nvim","nvim-cmp","nvim-config","telescope","vim","vimrc","vscode"],"created_at":"2024-07-31T18:00:48.715Z","updated_at":"2025-03-27T21:30:36.766Z","avatar_url":"https://github.com/Avimitin.png","language":"Lua","readme":"\u003ch1 align=\"center\"\u003eMy Neovim Configuration\u003c/h1\u003e\n\u003cimg src=\"./docs/images/screenshot.png\" width=\"45%\" align=\"right\"/\u003e\n\n![badge](https://img.shields.io/github/license/Avimitin/nvim)\n\n## Features\n\n* ***Handy*** and ***Smoothy***: There will always be a panel to remind you\nwhen you forget your key settings. There will always be a short keystroke to help\nyou get to the place you want to jump to. There will always…\n* ***Powerful*** coding experience: nvim-lspconfig powered great LSP experient.\n* ***Fancy looking***: Well designed, denoised, uncluttered UI. Talk is cheap, see the [gallery](#Gallery).\n* ***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.\n\n## Getting Start\n\nThis configuration is compatible with neovim 0.10+ version.\n\n```bash\ngit clone --depth=1 https://github.com/Avimitin/nvim.git ~/.config/nvim\n```\n\nFinally, input `nvim` to open the editor, and all plugins will be downloaded automatically.\n\n```bash\nnvim\n```\n\n---\n\nTo use this in your home-manager, you can use the xdg.configFile attribute:\n\n```nix\n{ pkgs }:\n{\n  xdg.configFile = {\n    neovim = {\n      target = \"nvim\";\n      source = pkgs.fetchFromGitHub {\n        repo = \"nvim\";\n        owner = \"Avimitin\";\n        rev = \"...\";\n        hash = \"...\";\n      }\n    };\n  };\n}\n```\n\nDiagnostic error/warning/hint are highlighted with undercurl, please use [kitty](https://sw.kovidgoyal.net/kitty/), [wezterm](https://wezfurlong.org/wezterm/index.html)\nor anyother terminal that support undercurl.\n\nIf you are using tmux, to have a correct display, you can try my configuration below:\n\n```tmux\n# (MUST) Enable 256 color for tmux\nset -g default-terminal \"tmux-256color\"\n\n# (Optional, choose any of them)\n# Enable true color and undercurl for wezterm\nset -as terminal-features \",wezterm*:RGB\"\nset -as terminal-features \",wezterm*:usstyle\"\n# Same as above, but for kitty. (kitty doesn't support Windows so I have to keep two configuration here)\nset -as terminal-features \",kitty*:RGB\"\nset -as terminal-features \",kitty*:usstyle\"\n# Same as above, but for SSH. This is useful because I am using `alias ssh=\"TERM=xterm-256color exec ssh\"`\nset -as terminal-features \",xterm-256color*:RGB\"\nset -as terminal-features \",xterm-256color*:usstyle\"\nset -as terminal-overrides \",xterm*:Tc\"\n\n# (MUST) This hijack the neovim undercurl char sequence, to avoid tmux escape them.\nset -as terminal-overrides ',*:Smulx=\\E[4::%p1%dm'\n```\n\n## Project Structure\n\n- `after/ftplugin/\u003clang\u003e.lua`: missing default configuration for filetypes\n- `vsnip`: Snippets are placed in here.\n- `lua`: the configuration core\n\n    * `key-mapping.lua`: my modification to the built-in key mappings\n    * `pack.lua`: script to download lazy.nvim plugin manager\n    * `core/`: my modification to the built-in options and auto commands\n    * `completion/`: plugins and configuration for LSP and vim command completion\n    * `git/`: plugin and configuration for using git in Neovim\n    * `lang/`: plugins and configuration for using LSP server and get diagnostic in Neovim\n    * `libs/`: functions that I don't want to write twice\n    * `tools/`: miscellaneous plugins that can enhance editing experience\n    * `treesitter/`: plugins for text object highlight and editing\n    * `ui/`: plugins for decorating the neovim\n\n- `ftdetect`: List of script to help neovim identify filetype for some file, not important.\n- `indent`: List of script to help neovim properly set indentation, not important.\n- `syntax`: Additional syntax detection for some file type, not important.\n\n\n## Treesitter parsers in nix\n\n- For normal user: make sure gcc is installed, then run `:TSInstall \u003clanguage\u003e` to compile and install corresponding treesitter plugin\n- For nix user: you can add this repository as an overlay and use the pre-bundled neovim:\n\n```nix\n# flake.nix\n{\n  description = \"Simple home-manager neovim configuration\";\n\n  inputs = {\n    nixpkgs.url = \"github:NixOS/nixpkgs/nixos-unstable\";\n    my-neovim.url = \"github:Avimitin/nvim\";\n    home-manager = {\n      url = \"github:nix-community/home-manager\";\n      inputs.nixpkgs.follows = \"nixpkgs\";\n    };\n  };\n\n  outputs = { self, nixpkgs, flake-utils, home-manager, my-neovim }: {\n    homeConfiguration = home-manager.lib.homeManagerConfiguration {\n      # import my overlay, it will add a new `neovim-nightly` derivation into your nixpkgs\n      pkgs = import nixpkgs { system = \"x86_64-linux\" overlays = [ my-neovim.overlays.default ];  };\n      modules = [\n        ({ pkgs }: {\n          # Then add the pre-bundled neovim into your home configuration\n          home.packages = [\n            pkgs.neovim-nightly\n          ];\n        })\n      ];\n    };\n  };\n}\n```\n\n\n## Gallery\n\n\u003cdetails\u003e\n    \u003csummary markdown=\"span\"\u003eUtilities\u003c/summary\u003e\n\n| Easy in-file jump                             |\n| --------------------------------------------- |\n| ![LightSpeed](./docs/images/lightspeed.png)   |\n\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n    \u003csummary markdown=\"span\"\u003eMarkdown Utils\u003c/summary\u003e\n\n| Markdown Preview                                   |\n|----------------------------------------------------|\n| ![image](./docs/images/neovim-md.png)              |\n\n| Table                                              |\n|----------------------------------------------------|\n| ![vim-table-mode-gif](./docs/images/tablemode.gif) |\n\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n    \u003csummary markdown=\"span\"\u003eCoding Utils\u003c/summary\u003e\n\n| LSP Progress |\n|-----------------|\n| ![image](./docs/images/lsp-progress.png)  |\n\n| Symbol Tree |\n|-----------------|\n| ![image](./docs/images/symboltree.png)  |\n\n| Code Completion                       |\n|---------------------------------------|\n| ![coding](./docs/images/nvim-cmp.png) |\n\n| Command Completion                                 |\n|----------------------------------------------------|\n| ![cmp-cmdline](./docs/images/commandline-completion.png) |\n\n| Errorlens Like diagnostic |\n|-----------------------------|\n| ![lsp-line](./docs/images/errorlens.png) |\n\n| Signature Help                       |\n|--------------------------------------|\n| ![lsp-popup](./docs/images/help.png) |\n\n| Code Actions                                    |\n|-------------------------------------------------|\n| ![lsp-codeaction](./docs/images/codeaction.png) |\n\n| Diagnostic                                      |\n|-------------------------------------------------|\n| ![lsp-diagnostic](./docs/images/diagnostic.png) |\n\n| Code navigate                          |\n|----------------------------------------|\n| ![Navigate](./docs/images/def-ref.png) |\n\n| Project grep                                        |\n|-----------------------------------------------------|\n| ![live-grep](./docs/images/telescope-live-grep.png) |\n\n| Symbol search                                   |\n|-------------------------------------------------|\n| ![symbols](./docs/images/telescope-symbols.png) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n    \u003csummary markdown=\"span\"\u003eFile Manager\u003c/summary\u003e\n\n| neotree                                 |\n|-------------------------------------------|\n| ![nvim-tree](./docs/images/neotree.png) |\n\n| Find file                                           |\n|-----------------------------------------------------|\n| ![find-file](./docs/images/telescope-find-file.png) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n    \u003csummary markdown=\"span\"\u003eThemes\u003c/summary\u003e\n\n| Kanagawa Theme                          |\n|-----------------------------------------|\n| ![kanagawa](./docs/images/kanagawa.png) |\n\n\u003c/details\u003e\n\n## License\n\nThis configuration since commit `912416ae9c4b55501b23a91d774b567ba8697dd1` are\nlicenced under the Apache 2.0 license.\n\n另附：禁止在 CSDN，bilibili 等国内平台使用该配置文件进行任何活动。\n你只保有自己修改部分的权利。\n\n# Additional notes\n\n## About treesitter bumping\n\n- Run `:Lazy sync`\n- Remove hash in ./nix/nvim-treesitter-lock-file.nix\n- Run `nix build '.#neovim-nightly'`\n- Update hash\n- Run `./bump_treesitter.hs`\n- Run `nix build '.#neovim-nightly'`\n","funding_links":[],"categories":["Lua"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAvimitin%2Fnvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAvimitin%2Fnvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAvimitin%2Fnvim/lists"}