{"id":13520100,"url":"https://github.com/ray-x/nvim","last_synced_at":"2025-04-06T13:10:39.261Z","repository":{"id":37323136,"uuid":"365651236","full_name":"ray-x/nvim","owner":"ray-x","description":"Personal neovim setup with 180+ plugins.","archived":false,"fork":false,"pushed_at":"2024-05-13T13:50:19.000Z","size":1480,"stargazers_count":347,"open_issues_count":2,"forks_count":23,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-05-14T00:28:53.205Z","etag":null,"topics":["dotfiles","lua","neovim","nvim","nvimrc","vimrc"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ray-x.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","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},"funding":{"github":"ray-x"}},"created_at":"2021-05-09T02:29:53.000Z","updated_at":"2024-05-30T05:09:55.327Z","dependencies_parsed_at":"2024-05-13T00:20:56.406Z","dependency_job_id":"f7f5f6cc-3e8f-4824-b4f9-d87298092669","html_url":"https://github.com/ray-x/nvim","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray-x%2Fnvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray-x%2Fnvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray-x%2Fnvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray-x%2Fnvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ray-x","download_url":"https://codeload.github.com/ray-x/nvim/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247485287,"owners_count":20946398,"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":["dotfiles","lua","neovim","nvim","nvimrc","vimrc"],"created_at":"2024-08-01T05:02:11.393Z","updated_at":"2025-04-06T13:10:39.238Z","avatar_url":"https://github.com/ray-x.png","language":"Lua","readme":" # NeoVim as a programming IDE\n\n## 🏎 🏎 🏎 Need for speed! 🏎 🏎 🏎\n\nThis neovim configure file is highly optimized for the impatient. Super lazy loading + After syntax highlight rendering. Render multiple files with treesitter in less than 45ms with ~170 plugins installed\n(e.g. Open both util.lua(1686 loc) and lsp.lua(1538 loc) from neovim source code in 58.6ms)\nThe setup set all plugins to be lazy loaded and trigger when it needed.\n\nThe `Packer` config locates in branch [Packer branch](https://github.com/ray-x/nvim/tree/packer)\nIt serves as my personal nvim setup. I am using it as my daily driver. The structure can be messy so it is not a setup for beginner\n\n- nvim Telescope preview:\n  ![telescope](https://user-images.githubusercontent.com/1681295/214219526-dfb3cd22-7b67-475b-9294-914590d2913b.jpg)\n\n- nvim+kitty + cmp :\n\n  ![vim_ide with\nnvim+kitty](https://user-images.githubusercontent.com/1681295/109258178-db2e6d80-784d-11eb-9cef-8b1cc6435e01.png?raw=true)\n\n## Battery included\n\nAbout 150 plugins and 14000 lines of lua and vim code.\n\n### Commands\n\n- Keymaps : floating windows show all keymaps defined in this repo\n- Jsonfmt: format json file\n- LG: lazygit\n- FZF: fzf\n- Spell: spell check\n- Gram: Grammar check\n- Bd: better `bdelete`\n- Gd: gitdiff(with fzf and delta)\n- Rg: ripgrep with telescope\n\n## Pager\nThe config can be used for pager\n\n## Difftool and mergetool\n\nIt has essential tools for `git difftool`\n\n## Neovim Plugins\n\nThere are lots of amazing plugins,\nI used following plugin a lots\n\n- `Plug` -\u003e `Dein` -\u003e `Lua-Packer` -\u003e [lazy.nvim](https://github.com/folke/lazy.nvim)\n\n  I followed Glepnir https://github.com/glepnir/nvim dotfiles when I start this repo.\n  A.T.M. nvim-cmp as a completion engine with LSP, LSP saga. vim-multi-cursor, telescope. treesitter,\n  lazy load vim-go. So, other than module folder, I could copy/paste everything else from glepnir's configure file,\n  which make my life easier.\n\n- Telescope + fzf\n\n  One of the best plugin for search anything. I used it to replace fzf, leaderF, leaderP, defx, Ag/Ack/Rg, yank(ring), project management. undolist and many more. Telescope is awesome, only issue is performance.\n\n- nvim-lsp with [navigator.lua](https://github.com/ray-x/navigator.lua)\n\n  vim-go and coc add around 200ms time and some of the extensions\n  might crash when I using (but it hard to check which because ~4 node.js services coc forked)\n  Some useful script from TJ, and [glepnir](https://github.com/glepnir)\n\n  nvim-tree: file-explorer (lightweight and fast)\n  hrsh7th/nvim-cmp: auto-complete\n  vsnip + luasnips: code snipts(Load snippet from VSCode extension). It is a full featured IDE.\n\n  ![document symbol](https://github.com/ray-x/files/blob/master/img/navigator/doc_symbol.gif?raw=true)\n\n- ALE -\u003e Efm -\u003e null-ls\n\nLint and format moved to null-ls.\n\n- Programming support:\n  Treesitter, nvim-lsp and [navigator.lua](https://github.com/ray-x/navigator.lua), for go, [go.nvim](https://github.com/ray-x/go.nvim)\n\n- Debug:\n\n  dlv, nvim-dap\n\n- Theme, look\u0026feel:\n\n  home cooked Aurora, windline (lua), devicons(lua), blankline(indent), bufferline\n\n- Color:\n\n  Primary with treesitter from nvim nightly (nvim-lsp and this make it hard for me to turn back to vim), log-highlight, limelight, interestingwords,\n  hexokinase as a replacement for colorizer (display hex and color in highlight)\n\n- Git:\n\n  fugitive, nvimtree, gitsigns.nvim, diffview.nvim\n\n- Format:\n\n  tabular, lsp based code formating (or, sometimes prettier), auto-pair\n\n- Menu and tab:\n\n  - guihua.lua the UI I created for personal use\n  - nvim-bufferline.lua: Yes, with lua and neovim only\n\n- Tools: Toggleterm, scrollview\n\n- Move and Edit:\n\n  easymotion -\u003e hop\u0026lightspeed, vim-multi-cursor, navigator.lua (better treesitter folding), Sad for complex find and replace\n\n## Install\n\nNote: I tested it on Mac and linux, not sure about window\n\nClone the repo\n\nLink nvim to $HOME/.config/\n\ne.g.\n\n```\nls ~/.config/nvim\n\n~/.config/nvim -\u003e /Users/rayx/github/dotfiles/nvim\n\n```\n\nOn windows the config path is\n`C:\\Users\\your_user_name\\AppData\\Local\\nvim`\nYou need to link or replace above folder\n\nPlease install Nerd Fonts(I am using VictorMono) and kitty so font setting in GUI will work as expected\n\nStartup nvim\n\nIf you saw error message \"Error in packer_compiled: ...\" Please press `Enter`, that will allow packer install the plugins.\nAfter all plugins install restart the nvim.\n\nNote:\nThe packages and data will be install to\n`~/.local/share/nvim`\n\nPlease backup this folder if necessary\n\nThe setup needs nvim0.8+. For earlier release, please check packer branch. A patched nerd font is needed. Also if you start nvim from terminal,\nmake sure it support nerdfont and emoji\n\n### missing sqlite, libsqlite3\n\nSome of the plugin I am using depends on sqlite.\nBy default sqlite was installed on MacOS. For other operating system, if you saw error message about sqlite, please\nfollowing the instruction [here to install sqlite](https://github.com/kkharji/sqlite.lua#windows)\n\n### Youtube video recording of install process\n\n[Install process](https://youtu.be/5XB28yocmuw)\n\n## Configure\n\nIf you would like to sync to my branch. You can add you own setup in lua/overwrite folder\n\nYou can put your own plugins setup in `modules/user` folder\n\n## Shell\n\n- fish + spaceship + kitty. It is cooool and faster.\n  nvim+kitty split view:\n\n  ![vim_ide with nvim+kitty](https://github.com/ray-x/dotfiles/blob/master/img/kitty.jpg)\n\n## External tools\n\nYou may need to install following tools to make best of the setup\n\n- git\n- build tools (e.g. gcc, make etc)\n- fzf\n- bat\n- delta\n- lazgit\n- ranger\n- write-good\n- proselint\n- ispell\n- zodide\n- node.js\n- develop language: python(and pynvim), go, rust etc\n- package management: pip, cater, npm etc\n- exa\n- ...\n\n## Parking lots\n\nThese tools are good, but due to confliction, less use, or, not suite to my workflow\n\n- vim/gvim\n- YCM you complete me\n- easymotion\n- vim-clap\n- oh-my-zh, iterm2\n- zpreztor\n- defx\n- ALE\n","funding_links":["https://github.com/sponsors/ray-x"],"categories":["Lua","Personal configurations"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fray-x%2Fnvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fray-x%2Fnvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fray-x%2Fnvim/lists"}