{"id":17994849,"url":"https://github.com/bekaboo/nvim","last_synced_at":"2025-06-17T07:36:02.516Z","repository":{"id":143419830,"uuid":"502776003","full_name":"Bekaboo/nvim","owner":"Bekaboo","description":"Neovim :: M Λ C R O - Editing made simple","archived":false,"fork":false,"pushed_at":"2024-10-30T09:05:28.000Z","size":10,"stargazers_count":220,"open_issues_count":0,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-17T13:04:17.550Z","etag":null,"topics":["lua","neovim","vim","vimscript"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Bekaboo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-06-13T02:04:12.000Z","updated_at":"2025-04-09T19:20:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"3bb131fd-b272-4a72-a6f5-e229ae0c4cfc","html_url":"https://github.com/Bekaboo/nvim","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Bekaboo/nvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bekaboo%2Fnvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bekaboo%2Fnvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bekaboo%2Fnvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bekaboo%2Fnvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bekaboo","download_url":"https://codeload.github.com/Bekaboo/nvim/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bekaboo%2Fnvim/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260315422,"owners_count":22990756,"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":["lua","neovim","vim","vimscript"],"created_at":"2024-10-29T20:16:37.117Z","updated_at":"2025-06-17T07:36:02.469Z","avatar_url":"https://github.com/Bekaboo.png","language":null,"readme":"# :warning: Moved to [here](https://github.com/Bekaboo/dot/tree/master/.config/nvim)\n\n## Neovim :: M Λ C R O\n\n[**Neovim :: M Λ C R O**](https://github.com/Bekaboo/nvim) is a collection of Neovim configuration files inspired\nby [Emacs / N Λ N O](https://github.com/rougier/nano-emacs).\n\nThe goal of macro-neovim is to provide a clean and elegant user interface\nwhile remaining practical for daily tasks, striking a balance between a\nstreamlined design and effective functionality. See [showcases](#showcases) to\nget a glimpse of the basic usage and what this configuration looks like.\n\nThis is a highly personalized and opinionated Neovim configuration, not a\ndistribution. While it's not meant for direct use, you're welcome to fork,\nexperiment, and adapt it to your liking. Feel free to use it as a starting\npoint for your configuration or borrow elements you find useful. Issues and PRs\nare welcome.\n\nCurrently only supports Linux (X11/Wayland/TTY).\n\n\u003ccenter\u003e\n    \u003cimg src=\"https://github.com/Bekaboo/nvim/assets/76579810/299137e7-9438-489b-b98b-7211a62678ae\" width=46%\u003e  \n    \u003cimg src=\"https://github.com/Bekaboo/nvim/assets/76579810/9e546e33-7678-47e2-8a80-368d7c59534a\" width=46%\u003e\n\u003c/center\u003e\n\n## Table of Contents\n\n\u003c!--toc:start--\u003e\n- [Features](#features)\n- [Requirements and Dependencies](#requirements-and-dependencies)\n  - [Basic](#basic)\n  - [Tree-sitter](#tree-sitter)\n  - [LSP](#lsp)\n  - [DAP](#dap)\n  - [Formatter](#formatter)\n- [Installation](#installation)\n- [Troubleshooting](#troubleshooting)\n- [Uninstallation](#uninstallation)\n- [Config Structure](#config-structure)\n- [Tweaking this Configuration](#tweaking-this-configuration)\n  - [Managing Plugins with Modules](#managing-plugins-with-modules)\n  - [Installing Packages to an Existing Module](#installing-packages-to-an-existing-module)\n  - [Installing Packages to a New Module](#installing-packages-to-a-new-module)\n  - [General Settings and Options](#general-settings-and-options)\n  - [Environment Variables](#environment-variables)\n  - [Keymaps](#keymaps)\n  - [Colorschemes](#colorschemes)\n  - [Auto Commands](#auto-commands)\n  - [LSP Server Configurations](#lsp-server-configurations)\n  - [DAP Configurations](#dap-configurations)\n  - [Snippets](#snippets)\n  - [Enabling VSCode Integration](#enabling-vscode-integration)\n- [Appendix](#appendix)\n  - [Showcases](#showcases)\n  - [Default Modules and Plugins of Choice](#default-modules-and-plugins-of-choice)\n    - [Third Party Plugins](#third-party-plugins)\n    - [Builtin Plugins](#builtin-plugins)\n  - [Startuptime](#startuptime)\n\u003c!--toc:end--\u003e\n\n## Features\n\n- Modular design\n    - Install and manage packages in groups\n    - Make it easy to use different set of configuration for different use\n      cases\n- Clean and uncluttered UI, including customized versions of:\n    - [winbar](https://github.com/Bekaboo/nvim/tree/master/lua/plugin/winbar)\n    - [statusline](https://github.com/Bekaboo/nvim/blob/master/lua/plugin/statusline.lua)\n    - [statuscolumn](https://github.com/Bekaboo/nvim/blob/master/lua/plugin/statuscolumn.lua)\n    - [colorschemes](https://github.com/Bekaboo/nvim/tree/master/colors)\n    - [intro message](https://github.com/Bekaboo/nvim/blob/master/plugin/intro.lua)\n- [VSCode-Neovim](https://github.com/vscode-neovim/vscode-neovim) integration, makes you feel at home in VSCode when you\n  occasionally need it\n- Massive [TeX math snippets](https://github.com/Bekaboo/nvim/blob/master/lua/snippets/shared/math.lua)\n- Jupyter Notebook integration: edit notebooks like markdown files, run code in\n  cells with simple commands and shortcuts\n- [Fine-tuned plugins](https://github.com/Bekaboo/nvim/tree/master/lua/configs) with [custom patches](https://github.com/Bekaboo/nvim/tree/master/patches)\n- Optimization for large files, open any file larger than 100 MB and edit like\n  butter\n- Fast startup around [~25 ms](#startuptime)\n\n## Requirements and Dependencies\n\n### Basic\n\n- [Neovim](https://github.com/neovim/neovim) 0.10, for exact version see [nvim-version.txt](https://github.com/Bekaboo/nvim/blob/master/nvim-version.txt)\n- [Git](https://git-scm.com/)\n- [GCC](https://gcc.gnu.org/) or [Clang](https://clang.llvm.org/) for building treesitter parsers and some libs\n- [Fd](https://github.com/sharkdp/fd), [Ripgrep](https://github.com/BurntSushi/ripgrep), and [Fzf](https://github.com/junegunn/fzf) for fuzzy search\n- [Pandoc](https://pandoc.org/), [custom scripts](https://github.com/Bekaboo/dot/tree/master/.scripts) and [TexLive](https://www.tug.org/texlive/) (for ArchLinux users, it is `texlive-core` and `texlive-extra`) for markdown → PDF conversion (`:MarkdownToPDF`)\n- [Node.js](https://nodejs.org/en) for installing dependencies for [markdown-preview.nvim](https://github.com/iamcco/markdown-preview.nvim)\n- [Pynvim](https://github.com/neovim/pynvim), [Jupyter Client](https://github.com/jupyter/jupyter_client), and [IPython Kernel](https://github.com/ipython/ipykernel) for Python support\n- [Jupytext](https://github.com/mwouts/jupytext) for editing Jupyter notebooks\n- A decent terminal emulator\n- A nerd font, e.g. [JetbrainsMono Nerd Font](https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/JetBrainsMono).\n  This is optional as nerd icons are disabled by default, to enable it, set the\n  environment variable `$NVIM_NF`, see [environment variables](#environment-variables)\n\n### Tree-sitter\n\nTree-sitter installation and configuration are handled by [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter).\n\nRequires a C compiler, e.g. [GCC](https://gcc.gnu.org/) or [Clang](https://clang.llvm.org/), for building parsers.\n\nTo add or remove support for a language, install or uninstall the corresponding\nparser using `:TSInstall` or `:TSUninstall`.\n\nTo make the change permanent, add or remove corresponding parsers in the\n`ensure_installed` field in the call to nvim-treesitter's `setup()` function,\nsee [lua/configs/nvim-treesitter.lua](https://github.com/Bekaboo/nvim/blob/master/lua/configs/nvim-treesitter.lua).\n\n### LSP\n\nFor LSP support, install the following language servers manually using your\nfavorite package manager:\n\n- Bash: [BashLS](https://github.com/bash-lsp/bash-language-server)\n\n    Example for ArchLinux users:\n\n    ```sh\n    sudo pacman -S bash-language-server\n    ```\n\n- C/C++: [Clang](https://clang.llvm.org/)\n- Lua: [LuaLS](https://github.com/LuaLS/lua-language-server)\n- Python: one of\n    - [Jedi Language Server](https://github.com/pappasam/jedi-language-server)\n    - [Python LSP Server](https://github.com/python-lsp/python-lsp-server)\n    - [Pyright](https://github.com/microsoft/pyright)\n- Rust: [Rust Analyzer](https://rust-analyzer.github.io/)\n- LaTeX: [TexLab](https://github.com/latex-lsp/texlab)\n- VimL: [VimLS](https://github.com/iamcco/vim-language-server)\n- Markdown: [Marksman](https://github.com/artempyanykh/marksman)\n- Go: [Gopls](https://github.com/golang/tools/tree/master/gopls)\n- Typescript: [Typescript Language Server](https://github.com/typescript-language-server/typescript-language-server) and [Biome](https://biomejs.dev/) \n- General-purpose language server: [EFM Language Server](https://github.com/mattn/efm-langserver)\n    - Already configured for\n        - [Black](https://github.com/psf/black) (formatter)\n        - [Shfmt](https://github.com/mvdan/sh) (formatter)\n        - [Fish-indent](https://fishshell.com/docs/current/cmds/fish_indent.html) (formatter)\n        - [StyLua](https://github.com/JohnnyMorganz/StyLua) (formatter)\n        - [Gofmt](https://pkg.go.dev/cmd/gofmt) (formatter)\n        - [Golangcli-lint](https://github.com/golangci/golangci-lint) (linter)\n        - [Prettier](https://prettier.io/) (formatter)\n        - [Eslint](https://eslint.org/) (linter)\n        - ...\n\nTo add support for other languages, install corresponding language servers\nmanually then add `lsp.lua` files under [after/ftplugin](https://github.com/Bekaboo/nvim/tree/master/after/ftplugin) to automatically launch\nthem for different filetypes.\n\nSome examples of `lsp.lua` files:\n\n- [after/ftplugin/lua/lsp.lua](https://github.com/Bekaboo/nvim/blob/master/after/ftplugin/lua/lsp.lua)\n- [after/ftplugin/python/lsp.lua](https://github.com/Bekaboo/nvim/blob/master/after/ftplugin/python/lsp.lua)\n- [after/ftplugin/rust/lsp.lua](https://github.com/Bekaboo/nvim/blob/master/after/ftplugin/rust/lsp.lua)\n- [after/ftplugin/sh/lsp.lua](https://github.com/Bekaboo/nvim/blob/master/after/ftplugin/sh/lsp.lua)\n- [after/ftplugin/go/lsp.lua](https://github.com/Bekaboo/nvim/blob/master/after/ftplugin/go/lsp.lua)\n- [after/ftplugin/typescript/lsp.lua](https://github.com/Bekaboo/nvim/blob/master/after/ftplugin/typescript/lsp.lua)\n\n### DAP\n\nInstall the following debug adapters manually:\n\n- Bash:\n\n    Go to [vscode-bash-debug release page](https://github.com/rogalmic/vscode-bash-debug/releases),\n    download the latest release (`bash-debug-x.x.x.vsix`), extract\n    (change the extension from `.vsix` to `.zip` then unzip it) the contents\n    to a new directory `vscode-bash-debug/` and put it under stdpath `data`\n    (see `:h stdpath`).\n\n    Make sure `node` is executable.\n\n- C/C++: install [CodeLLDB](https://github.com/vadimcn/codelldb).\n\n    Example for ArchLinux users:\n\n    ```sh\n    yay -S codelldb     # Install from AUR\n    ```\n\n- Python: install [DebugPy](https://github.com/microsoft/debugpy)\n\n    Example for ArchLinux users:\n\n    ```sh\n    sudo pacman -S python-debugpy\n    ```\n\n    or\n\n    ```sh\n    pip install --local debugpy # Install to user's home directory\n    ```\n\n- Go: install [Delve](https://github.com/go-delve/delve)\n\nFor more information on DAP installation, see [Debug Adapter Installation](https://github.com/mfussenegger/nvim-dap/wiki/Debug-Adapter-installation).\n\n### Formatter\n\n- Bash: install [Shfmt](https://github.com/mvdan/sh)\\*\n- C/C++: install [Clang](https://clang.llvm.org/) to use `clang-format`\n- Lua: install [StyLua](https://github.com/JohnnyMorganz/StyLua)\\*\n- Rust: install [Rust](https://www.rust-lang.org/tools/install) to use `rustfmt`\n- Python: install [Black](https://github.com/psf/black)\\*\n- LaTeX: install [texlive-core](http://tug.org/texlive/) to use `latexindent`\n\n\u003csub\u003e\\*Need [EFM Language Server](https://github.com/mattn/efm-langserver) to work with `vim.lsp.buf.format()`\u003c/sub\u003e\n\n## Installation\n\n1. Make sure you have required dependencies installed.\n2. Clone this repo to your config directory\n\n    ```sh\n    git clone https://github.com/Bekaboo/nvim ~/.config/nvim-macro\n    ```\n\n4. Open neovim using \n\n    ```sh\n    NVIM_APPNAME=nvim-macro nvim\n    ```\n\n    On first installation, neovim will prompt you to decide whether to install\n    third-party plugins, press `y` to install, `n` to skip, `never` to skip and\n    disable the prompt in the future (aka \"do not ask again\").\n\n    The suggestion is to use `n` to skip installing plugins on first launch,\n    and see if everything works OK under a bare minimum setup. Depending on\n    your needs, you can choose whether to install third-party plugins later\n    using `y`/`yes` or `never` on the second launch.\n\n    **Some notes about third-party plugins**\n\n    Installing third-party plugins is known to cause issues in some cases,\n    including:\n\n    1. Partially cloned plugins and missing dependencies due to slow network\n       connection\n    2. Building failure especially for plugins like [telescope-fzf-native.nvim](https://github.com/nvim-telescope/telescope-fzf-native.nvim)\n       and [markdown-preview.nvim](https://github.com/iamcco/markdown-preview.nvim) due to missing building dependencies or slow\n       installation process\n    3. Treesitter plugins can easily cause issues if you are on a different\n       nvim version, check [nvim-version.txt](https://github.com/Bekaboo/nvim/blob/master/nvim-version.txt) for the version of nvim targeted by\n       this config\n\n    To avoid these issues,\n\n    1. Ensure you have a fast network before installing third-party plugins\n    2. If the building process failed, go to corresponding project directory\n       under `g:package_path` and manually run the build command from there.\n       The build commands are declared in module specification files under\n       [lua/modules](https://github.com/Bekaboo/nvim/tree/master/lua/modules)\n    3. Ensure you are on the same version of nvim as specified in\n       [nvim-version.txt](https://github.com/Bekaboo/nvim/blob/master/nvim-version.txt) if you encounter any issue related to treesitter\n\n5. After entering neovim, Run `:checkhealth` to check potential dependency\n   issues.\n6. Enjoy!\n\n## Troubleshooting\n\nIf you encounter any issue, please try the following steps:\n\n1. Run `:Lazy restore` once to ensure that all packages are properly\n   installed and **patched**\n\n2. Run `:checkhealth` to check potential dependency issues\n\n3. Check `:version` to make sure you are on the same (of above) version of\n   neovim as specified in [nvim-version.txt](https://github.com/Bekaboo/nvim/blob/master/nvim-version.txt)\n\n4. Try removing the following paths then restart Neovim:\n\n    - `:echo stdpath('cache')`\n    - `:echo stdpath('state')`\n    - `:echo stdpath('data')`\n\n5. If still not working, please open an issue and I will be happy to help\n\n## Uninstallation\n\nYou can uninstall this config completely by simply removing the following\npaths:\n\n- `:echo stdpath('config')`\n- `:echo stdpath('cache')`\n- `:echo stdpath('state')`\n- `:echo stdpath('data')`\n\n## Config Structure\n\n```\n.\n├── colors                      # colorschemes\n├── plugin                      # custom plugins\n├── ftplugin                    # custom filetype plugins\n├── init.lua                    # entry of config\n├── lua\n│   ├── core                    # files under this folder is required by 'init.lua'\n│   │   ├── autocmds.lua\n│   │   ├── general.lua         # options and general settings\n│   │   ├── keymaps.lua\n│   │   └── modules.lua         # bootstraps plugin manager and specifies which modules to include\n│   ├── modules                 # all plugin specifications and configs go here\n│   │   ├── lib.lua             # plugin specifications in module 'lib'\n│   │   ├── completion.lua      # plugin specifications in module 'completion'\n│   │   ├── debug.lua           # plugin specifications in modules 'debug'\n│   │   ├── langs.lua           # plugin specifications in module 'langs'\n│   │   ├── markup.lua          # ...\n│   │   ├── llm.lua\n│   │   ├── tools.lua\n│   │   ├── treesitter.lua\n│   │   └── colorschemes.lua\n│   ├── configs                 # configs for each plugin\n│   ├── snippets                # snippets\n│   ├── plugin                  # the actual implementation of custom plugins\n│   └── utils\n└── syntax                      # syntax files\n```\n\n## Tweaking this Configuration\n\n### Managing Plugins with Modules\n\nIn order to enable or disable a module, one need to change the table in\n[lua/core/modules.lua](https://github.com/Bekaboo/nvim/blob/master/lua/core/modules.lua) passed to `enable_modules()`, for example\n\n```lua\nenable_modules({\n  'lib',\n  'treesitter',\n  'edit',\n  -- ...\n})\n```\n\n### Installing Packages to an Existing Module\n\nTo install plugin `foo` under module `bar`, just insert the corresponding\nspecification to the big table `lua/modules/bar.lua` returns, for instance,\n\n`lua/modules/bar.lua`:\n\n```lua\nreturn {\n  -- ...\n  {\n    'foo/foo',\n    dependencies = 'foo_dep',\n  },\n}\n```\n\n### Installing Packages to a New Module\n\nTo install plugin `foo` under module `bar`, one should first\ncreate module `bar` under [lua/modules](https://github.com/Bekaboo/nvim/tree/master/lua/modules):\n\n```\n.\n└── lua\n    └── modules\n        └── bar.lua\n```\n\na module should return a big table containing all specifications of plugins\nunder that module, for instance:\n\n```lua\nreturn {\n  {\n    'goolord/alpha-nvim',\n    cond = function()\n      return vim.fn.argc() == 0 and\n          vim.o.lines \u003e= 36 and vim.o.columns \u003e= 80\n    end,\n    dependencies = 'nvim-web-devicons',\n  },\n\n  {\n    'romgrk/barbar.nvim',\n    dependencies = 'nvim-web-devicons',\n    config = function() require('bufferline').setup() end,\n  },\n}\n```\n\nAfter creating the new module `bar`, enable it in [lua/core/modules.lua](https://github.com/Bekaboo/nvim/blob/master/lua/core/modules.lua):\n\n```lua\nenable_modules({\n  -- ...\n  'bar',\n  -- ...\n})\n```\n\n### General Settings and Options\n\nSee [lua/core/general.lua](https://github.com/Bekaboo/nvim/blob/master/lua/core/general.lua).\n\n### Environment Variables\n\n- `$NVIM_NO3RD`: disable third-party plugins if set\n- `$NVIM_NF`: enable nerd font icons if set\n\n### Keymaps\n\nSee [lua/core/keymaps.lua](https://github.com/Bekaboo/nvim/blob/master/lua/core/keymaps.lua), or see [module config files](https://github.com/Bekaboo/nvim/tree/master/lua/configs) for\ncorresponding plugin keymaps.\n\n### Colorschemes\n\n`cockatoo`, `nano`, `macro`, and `sonokai` are three builtin custom\ncolorschemes, with separate palettes for dark and light background.\n\nNeovim is configured to restore the previous background and colorscheme\nsettings on startup, so there is no need to set them up in the config file\nexplicitly.\n\nTo disable the auto-restore feature, remove the plugin [plugin/colorscheme.lua](https://github.com/Bekaboo/nvim/tree/master/plugin/colorscheme.lua).\n\nTo tweak this colorscheme, edit corresponding colorscheme files under [colors](https://github.com/Bekaboo/nvim/tree/master/colors).\n\n### Auto Commands\n\nSee [lua/core/autocmds.lua](https://github.com/Bekaboo/nvim/blob/master/lua/core/autocmds.lua).\n\n### LSP Server Configurations\n\nSee [lua/utils/lsp.lua](https://github.com/Bekaboo/nvim/tree/master/lua/utils/lsp.lua) and `lsp.lua` files under [after/ftplugin](https://github.com/Bekaboo/nvim/tree/master/after/ftplugin).\n\n### DAP Configurations\n\nSee [lua/configs/dap-configs](https://github.com/Bekaboo/nvim/tree/master/lua/configs/dap-configs), [lua/configs/nvim-dap.lua](https://github.com/Bekaboo/nvim/tree/master/lua/configs/nvim-dap.lua), and [lua/configs/nvim-dap-ui.lua](https://github.com/Bekaboo/nvim/tree/master/lua/configs/nvim-dap-ui.lua).\n\n### Snippets\n\nThis configuration use [LuaSnip](https://github.com/L3MON4D3/LuaSnip) as the snippet engine,\ncustom snippets for different filetypes\nare defined under [lua/snippets](https://github.com/Bekaboo/nvim/tree/master/lua/snippets).\n\n### Enabling VSCode Integration\n\nVSCode integration takes advantages of the modular design, allowing to use\na different set of modules when Neovim is launched by VSCode, relevant code is\nin [autoload/plugin/vscode.vim](https://github.com/Bekaboo/nvim/blob/master/autoload/plugin/vscode.vim) and [lua/core/modules.lua](https://github.com/Bekaboo/nvim/blob/master/lua/core/modules.lua).\n\nTo make VSCode integration work, please install [VSCode-Neovim](https://github.com/vscode-neovim/vscode-neovim) in VSCode\nand configure it correctly.\n\nAfter setting up VSCode-Neovim, re-enter VSCode, open a random file\nand it should work out of the box.\n\n## Appendix\n\n### Showcases\n\n- File manager using [oil.nvim](https://github.com/stevearc/oil.nvim)\n\n    \u003cimg src=\"https://github.com/Bekaboo/nvim/assets/76579810/26bb146f-7637-4f68-acd7-baecc08f1eaf\" width=75%\u003e\n\n- DAP support powered by [nvim-dap](https://github.com/mfussenegger/nvim-dap) and [nvim-dap-ui](https://github.com/rcarriga/nvim-dap-ui)\n\n    \u003cimg src=\"https://github.com/Bekaboo/nvim/assets/76579810/f6c7e6ce-283b-43d7-8bc3-e8b24513a03b\" width=75%\u003e\n\n- Jupyter Notebook integration using [jupytext](https://github.com/Bekaboo/nvim/tree/master/lua/plugin/jupytext.lua) and [molten-nvim](https://github.com/benlubas/molten-nvim)\n\n    \u003cimg src=\"https://github.com/Bekaboo/nvim/assets/76579810/ce212348-8b89-4a03-a222-ab74f0338a7d\" width=75%\u003e\n\n- Winbar with IDE-like drop-down menus using [dropbar.nvim](https://github.com/Bekaboo/dropbar.nvim)\n\n    \u003cimg src=\"https://github.com/Bekaboo/nvim/assets/76579810/247401a9-6127-4d73-bb21-ceb847d8f7b9\" width=75%\u003e\n\n- LSP hover \u0026 completion thanks to Neovim builtin LSP client and [nvim-cmp](https://github.com/hrsh7th/nvim-cmp)\n\n    \u003cimg src=\"https://github.com/Bekaboo/nvim/assets/76579810/13589137-b5c7-4104-810c-f8cdc56f9d1b\" width=75%\u003e\n\n    \u003cimg src=\"https://github.com/Bekaboo/nvim/assets/76579810/60c5b599-4191-494d-ad83-1ca7a84eab17\" width=75%\u003e\n\n- Git integration: [fugitive](https://github.com/tpope/vim-fugitive) and [gitsigns.nvim](https://github.com/tpope/vim-fugitive)\n\n    \u003cimg src=\"https://github.com/Bekaboo/nvim/assets/76579810/a5e0a41d-4e85-4bfc-a39d-cc7b76abedcf\" width=75%\u003e\n\n    \u003cimg src=\"https://github.com/Bekaboo/nvim/assets/76579810/73da4ee1-8f6c-440a-9eb9-0bcf3bc8e3ea\" width=75%\u003e\n\n### Default Modules and Plugins of Choice\n\n#### Third Party Plugins\n\nTotal # of plugins: 50 (package manager included).\n\n- **Lib**\n    - [nvim-web-devicons](https://github.com/kyazdani42/nvim-web-devicons)\n- **Completion**\n    - [nvim-cmp](https://github.com/hrsh7th/nvim-cmp)\n    - [cmp-calc](https://github.com/hrsh7th/cmp-calc)\n    - [cmp-cmdline](https://github.com/hrsh7th/cmp-cmdline)\n    - [cmp-path](https://github.com/hrsh7th/cmp-path)\n    - [cmp-nvim-lsp](https://github.com/hrsh7th/cmp-nvim-lsp)\n    - [cmp-buffer](https://github.com/hrsh7th/cmp-buffer)\n    - [cmp_luasnip](https://github.com/saadparwaiz1/cmp_luasnip)\n    - [cmp-nvim-lsp-signature-help](https://github.com/hrsh7th/cmp-nvim-lsp-signature-help)\n    - [cmp-dap](https://github.com/rcarriga/cmp-dap)\n    - [LuaSnip](https://github.com/L3MON4D3/LuaSnip)\n- **LLM**\n    - [codeium.vim](https://github.com/Exafunction/codeium.vim)\n    - [codecompanion.nvim](https://github.com/olimorris/codecompanion.nvim)\n- **Markup**\n    - [vimtex](https://github.com/lervag/vimtex)\n    - [markdown-preview.nvim](https://github.com/iamcco/markdown-preview.nvim)\n    - [vim-table-mode](https://github.com/dhruvasagar/vim-table-mode)\n    - [otter.nvim](https://github.com/jmbuhr/otter.nvim)\n    - [molten-nvim](https://github.com/benlubas/molten-nvim)\n    - [headlines.nvim](https://github.com/lukas-reineke/headlines.nvim)\n    - [img-clip.nvim](https://github.com/HakonHarnes/img-clip.nvim)\n- **Edit**\n    - [nvim-surround](https://github.com/kylechui/nvim-surround)\n    - [vim-sleuth](https://github.com/tpope/vim-sleuth)\n    - [ultimate-autopairs.nvim](https://github.com/altermo/ultimate-autopair.nvim)\n    - [vim-easy-align](https://github.com/junegunn/vim-easy-align)\n- **Tools**\n    - [fzf-lua](https://github.com/ibhagwan/fzf-lua)\n    - [flatten.nvim](https://github.com/willothy/flatten.nvim)\n    - [gitsigns.nvim](https://github.com/lewis6991/gitsigns.nvim)\n        - [plenary.nvim](https://github.com/nvim-lua/plenary.nvim) (dependency)\n    - [git-conflict](https://github.com/akinsho/git-conflict.nvim)\n    - [nvim-colorizer.lua](https://github.com/NvChad/nvim-colorizer.lua)\n    - [vim-fugitive](https://github.com/tpope/vim-fugitive)\n        - [vim-rhubarb](https://github.com/tpope/vim-rhubarb) (dependency)\n        - [fugitive-gitlab.vim](https://github.com/shumphrey/fugitive-gitlab.vim) (dependency)\n    - [oil.nvim](https://github.com/stevearc/oil.nvim)\n- **LSP**\n    - [clangd_extensions.nvim](https://github.com/p00f/clangd_extensions.nvim)\n- **Treesitter**\n    - [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter)\n    - [nvim-treesitter-textobjects](https://github.com/nvim-treesitter/nvim-treesitter-textobjects)\n    - [nvim-ts-context-commentstring](https://github.com/JoosepAlviste/nvim-ts-context-commentstring)\n    - [nvim-treesitter-endwise](https://github.com/RRethy/nvim-treesitter-endwise)\n    - [treesj](https://github.com/Wansmer/treesj)\n    - [cellular-automaton.nvim](https://github.com/Eandrju/cellular-automaton.nvim)\n- **Debug**\n    - [nvim-dap](https://github.com/mfussenegger/nvim-dap)\n    - [nvim-dap-ui](https://github.com/rcarriga/nvim-dap-ui)\n        - [nvim-nio](https://github.com/nvim-neotest/nvim-nio) (dependency)\n    - [one-small-step-for-vimkind](https://github.com/jbyuki/one-small-step-for-vimkind)\n- **Colorschemes**\n    - [everforest](https://github.com/sainnhe/everforest)\n    - [gruvbox-material](https://github.com/sainnhe/gruvbox-material)\n\n#### Builtin Plugins\n\n- [colorcolumn](https://github.com/Bekaboo/nvim/tree/master/plugin/colorcolumn.lua)\n    - Shows color column dynamically based on current line width\n    - Released as [deadcolumn.nvim](https://github.com/Bekaboo/deadcolumn.nvim)\n- [colorscheme](https://github.com/Bekaboo/nvim/tree/master/plugin/colorscheme.lua)\n    - Remembers and restores previous background and colorscheme settings\n    - Syncs background and colorscheme settings among multiple Neovim instances\n      if scripts [setbg](https://github.com/Bekaboo/dot/blob/master/.scripts/setbg) and [setcolor](https://github.com/Bekaboo/dot/blob/master/.scripts/setcolor) are in `$PATH`\n- [expandtab](https://github.com/Bekaboo/nvim/tree/master/lua/plugin/expandtab.lua)\n    - Always use spaces for alignment, even if `'expandtab'` is not set, see\n      `:h 'tabstop'` point 5\n- [fcitx5](https://github.com/Bekaboo/nvim/tree/master/lua/plugin/fcitx5.lua)\n    - Switches and restores fcitx5 state in each buffer asynchronously\n- [jupytext](https://github.com/Bekaboo/nvim/tree/master/lua/plugin/jupytext.lua)\n    - Edits jupyter notebook like markdown files\n    - Writes into jupyter notebook asynchronously, which gives a smoother\n      experience than [jupytext.vim](https://github.com/goerz/jupytext)\n- [intro](https://github.com/Bekaboo/nvim/tree/master/plugin/intro.lua)\n    - Shows a custom intro message on startup\n- [lsp](https://github.com/Bekaboo/nvim/tree/master/lua/plugin/lsp.lua)\n    - Sets up LSP and diagnostic options and commands on `LspAttach` or\n      `DiagnosticChanged`\n- [readline](https://github.com/Bekaboo/nvim/tree/master/lua/plugin/readline.lua)\n    - Readline-like keybindings in insert and command mode\n- [statuscolumn](https://github.com/Bekaboo/nvim/tree/master/lua/plugin/statuscolumn.lua)\n    - Custom statuscolumn, with git signs on the right of line numbers\n- [statusline](https://github.com/Bekaboo/nvim/tree/master/lua/plugin/statusline.lua)\n    - Custom statusline inspired by [nano-emacs](https://github.com/rougier/nano-emacs)\n- [tabline](https://github.com/Bekaboo/nvim/tree/master/lua/plugin/tabline.lua)\n    - Simple tabline that shows the current working directory of each tab\n    - Use `:[count]TabRename [name]` to rename tabs\n- [tabout](https://github.com/Bekaboo/nvim/tree/master/lua/plugin/tabout.lua)\n    - Tab out and in with `\u003cTab\u003e` and `\u003cS-Tab\u003e`\n- [term](https://github.com/Bekaboo/nvim/tree/master/lua/plugin/term.lua)\n    - Some nice setup for terminal buffers\n- [tmux](https://github.com/Bekaboo/nvim/tree/master/lua/plugin/tmux.lua)\n    - Integration with tmux, provides unified keymaps for navigation, resizing,\n      and many other window operations\n- [vscode](https://github.com/Bekaboo/nvim/tree/master/autoload/plugin/vscode.vim)\n    - Integration with [VSCode-Neovim](https://github.com/vscode-neovim/vscode-neovim)\n- [winbar](https://github.com/Bekaboo/nvim/blob/master/lua/plugin/winbar.lua)\n    - A winbar with drop-down menus and multiple backends\n    - Released as [dropbar.nvim](https://github.com/Bekaboo/dropbar.nvim)\n- [markdown-capitalized-title](https://github.com/Bekaboo/nvim/blob/master/after/ftplugin/markdown/capitalized-title.lua)\n    - Automatically capitalize the first letter of each word in markdown titles\n    - Use `:MarkdownSetCapTitle enable/disable` to enable or disable this\n      feature\n\n### Startuptime\n\n- Neovim Version:\n\n    ```\n    NVIM v0.10.0-dev-2363+gb76a01055f\n    Build type: Release\n    LuaJIT 2.1.1702233742\n    ```\n\n- Config Commit: `5970178e`\n\n- System: Arch Linux 6.7.4-arch1-1\n\n- Machine: Dell XPS 13-7390\n\n- Startup time with `--clean`:\n\n    ```sh\n    hyperfine 'nvim --clean +q'\n    ```\n\n    ```\n    Benchmark 1: nvim --clean +q\n      Time (mean ± σ):       9.4 ms ±   1.9 ms    [User: 6.3 ms, System: 3.2 ms]\n      Range (min … max):     6.5 ms …  15.1 ms    185 runs\n    ```\n\n- Startup time with this config:\n\n    ```sh\n    hyperfine 'nvim +q'\n    ```\n\n    ```\n    Benchmark 1: nvim +q\n      Time (mean ± σ):      18.1 ms ±   1.3 ms    [User: 13.6 ms, System: 4.5 ms]\n      Range (min … max):    15.5 ms …  22.0 ms    127 runs\n    ```\n\n    \u003cdetails\u003e\n      \u003csummary\u003estartuptime log\u003c/summary\u003e\n\n    ```\n    --- Startup times for process: Primary/TUI ---\n\n    times in msec\n     clock   self+sourced   self:  sourced script\n     clock   elapsed:              other lines\n\n    000.002  000.002: --- NVIM STARTING ---\n    000.168  000.166: event init\n    000.252  000.083: early init\n    000.305  000.053: locale set\n    000.352  000.047: init first window\n    000.615  000.263: inits 1\n    000.624  000.009: window checked\n    000.626  000.002: parsing arguments\n    001.130  000.063  000.063: require('vim.shared')\n    001.229  000.057  000.057: require('vim.inspect')\n    001.281  000.037  000.037: require('vim._options')\n    001.282  000.148  000.053: require('vim._editor')\n    001.284  000.258  000.048: require('vim._init_packages')\n    001.290  000.405: init lua interpreter\n    001.872  000.583: expanding arguments\n    001.908  000.036: inits 2\n    002.302  000.394: init highlight\n    002.306  000.003: --- NVIM STARTED ---\n\n    --- Startup times for process: Embedded ---\n\n    times in msec\n     clock   self+sourced   self:  sourced script\n     clock   elapsed:              other lines\n\n    000.002  000.002: --- NVIM STARTING ---\n    000.165  000.163: event init\n    000.242  000.077: early init\n    000.295  000.053: locale set\n    000.336  000.041: init first window\n    000.568  000.232: inits 1\n    000.582  000.015: window checked\n    000.589  000.007: parsing arguments\n    001.084  000.038  000.038: require('vim.shared')\n    001.192  000.047  000.047: require('vim.inspect')\n    001.239  000.036  000.036: require('vim._options')\n    001.241  000.154  000.070: require('vim._editor')\n    001.242  000.261  000.069: require('vim._init_packages')\n    001.244  000.394: init lua interpreter\n    001.299  000.054: expanding arguments\n    001.316  000.017: inits 2\n    001.554  000.238: init highlight\n    001.555  000.001: waiting for UI\n    001.649  000.094: done waiting for UI\n    001.652  000.003: clear screen\n    001.688  000.006  000.006: require('vim.keymap')\n    001.947  000.293  000.287: require('vim._defaults')\n    001.950  000.005: init default mappings \u0026 autocommands\n    002.376  000.051  000.051: sourcing /usr/share/nvim/runtime/ftplugin.vim\n    002.433  000.025  000.025: sourcing /usr/share/nvim/runtime/indent.vim\n    002.499  000.010  000.010: sourcing /usr/share/nvim/archlinux.vim\n    002.502  000.030  000.020: sourcing /etc/xdg/nvim/sysinit.vim\n    003.043  000.041  000.041: require('vim.fs')\n    003.205  000.133  000.133: require('vim.uri')\n    003.222  000.243  000.069: require('vim.loader')\n    003.756  001.216  000.973: require('core.general')\n    005.768  002.008  002.008: require('core.keymaps')\n    006.053  000.282  000.282: require('core.autocmds')\n    006.262  000.089  000.089: require('utils')\n    006.343  000.078  000.078: require('utils.static')\n    006.695  000.221  000.221: require('utils.static.icons._icons')\n    006.699  000.353  000.133: require('utils.static.icons')\n    007.039  000.076  000.076: require('modules.lib')\n    007.189  000.065  000.065: require('modules.edit')\n    007.287  000.060  000.060: require('modules.debug')\n    007.355  000.064  000.064: require('modules.tools')\n    007.408  000.047  000.047: require('modules.markup')\n    007.455  000.042  000.042: require('modules.completion')\n    007.519  000.060  000.060: require('modules.treesitter')\n    007.559  000.036  000.036: require('modules.colorschemes')\n    008.221  000.658  000.658: require('lazy')\n    008.250  000.011  000.011: require('ffi')\n    008.336  000.081  000.081: require('lazy.stats')\n    008.450  000.094  000.094: require('lazy.core.util')\n    008.536  000.083  000.083: require('lazy.core.config')\n    008.680  000.062  000.062: require('lazy.core.handler')\n    008.798  000.115  000.115: require('lazy.core.plugin')\n    008.812  000.274  000.098: require('lazy.core.loader')\n    010.241  000.085  000.085: require('lazy.core.handler.cmd')\n    010.349  000.103  000.103: require('lazy.core.handler.event')\n    010.532  000.178  000.178: require('lazy.core.handler.keys')\n    010.698  000.160  000.160: require('lazy.core.handler.ft')\n    011.196  000.024  000.024: sourcing /home/zeng/.local/share/nvim/packages/vimtex/ftdetect/cls.vim\n    011.247  000.017  000.017: sourcing /home/zeng/.local/share/nvim/packages/vimtex/ftdetect/tex.vim\n    011.288  000.021  000.021: sourcing /home/zeng/.local/share/nvim/packages/vimtex/ftdetect/tikz.vim\n    012.812  000.190  000.190: sourcing /usr/share/nvim/runtime/filetype.lua\n    012.886  000.006  000.006: require('vim.F')\n    013.509  000.127  000.127: sourcing /home/zeng/.config/nvim/plugin/_load.lua\n    013.677  000.064  000.064: require('utils.hl')\n    013.762  000.226  000.162: sourcing /home/zeng/.config/nvim/plugin/colorcolumn.lua\n    013.915  000.041  000.041: require('utils.json')\n    013.991  000.073  000.073: require('utils.fs')\n    015.510  000.962  000.962: sourcing /home/zeng/.config/nvim/colors/macro.lua\n    015.701  001.914  000.838: sourcing /home/zeng/.config/nvim/plugin/colorscheme.lua\n    016.132  000.098  000.098: require('vim.highlight')\n    016.280  000.550  000.452: sourcing /home/zeng/.config/nvim/plugin/intro.lua\n    016.466  000.063  000.063: sourcing /usr/share/nvim/runtime/plugin/editorconfig.lua\n    016.531  000.018  000.018: sourcing /usr/share/nvim/runtime/plugin/gzip.vim\n    016.626  000.069  000.069: sourcing /usr/share/nvim/runtime/plugin/man.lua\n    016.672  000.013  000.013: sourcing /usr/share/nvim/runtime/plugin/matchit.vim\n    016.831  000.136  000.136: sourcing /usr/share/nvim/runtime/plugin/matchparen.vim\n    016.873  000.012  000.012: sourcing /usr/share/nvim/runtime/plugin/netrwPlugin.vim\n    016.954  000.060  000.060: sourcing /usr/share/nvim/runtime/plugin/nvim.lua\n    017.030  000.054  000.054: sourcing /usr/share/nvim/runtime/plugin/osc52.lua\n    017.061  000.008  000.008: sourcing /usr/share/nvim/runtime/plugin/rplugin.vim\n    017.135  000.052  000.052: sourcing /usr/share/nvim/runtime/plugin/shada.vim\n    017.190  000.016  000.016: sourcing /usr/share/nvim/runtime/plugin/spellfile.vim\n    017.226  000.010  000.010: sourcing /usr/share/nvim/runtime/plugin/tarPlugin.vim\n    017.256  000.008  000.008: sourcing /usr/share/nvim/runtime/plugin/tohtml.vim\n    017.284  000.006  000.006: sourcing /usr/share/nvim/runtime/plugin/tutor.vim\n    017.326  000.011  000.011: sourcing /usr/share/nvim/runtime/plugin/zipPlugin.vim\n    017.410  011.355  005.044: require('core.packages')\n    017.413  014.890  000.028: sourcing /home/zeng/.config/nvim/init.lua\n    017.419  000.473: sourcing vimrc file(s)\n    017.522  000.051  000.051: sourcing /usr/share/nvim/runtime/filetype.lua\n    017.665  000.056  000.056: sourcing /usr/share/nvim/runtime/syntax/synload.vim\n    017.767  000.209  000.153: sourcing /usr/share/nvim/runtime/syntax/syntax.vim\n    017.779  000.101: inits 3\n    017.959  000.129  000.129: require('plugin.statuscolumn')\n    018.237  000.329: opening buffers\n    018.258  000.020: BufEnter autocommands\n    018.259  000.002: editing files in windows\n    018.280  000.021: VimEnter autocommands\n    018.340  000.060: UIEnter autocommands\n    018.567  000.179  000.179: sourcing /usr/share/nvim/runtime/autoload/provider/clipboard.vim\n    018.573  000.053: before starting main loop\n    018.911  000.074  000.074: require('utils.stl')\n    019.334  000.379  000.379: require('plugin.statusline')\n    019.542  000.130  000.130: require('utils.git')\n    019.754  000.197  000.197: require('vim._system')\n    021.197  001.843: first screen update\n    021.201  000.004: --- NVIM STARTED ---\n    ```\n\n    \u003c/details\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbekaboo%2Fnvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbekaboo%2Fnvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbekaboo%2Fnvim/lists"}