{"id":31592399,"url":"https://github.com/noopeeks/datanvim","last_synced_at":"2025-10-06T03:13:00.123Z","repository":{"id":243760558,"uuid":"813225904","full_name":"NoOPeEKS/DataNvim","owner":"NoOPeEKS","description":"A fully-featured batteries-included Neovim distribution for the world of Data Science. Prepared to run code and interact with Jupyter Notebooks without ever leaving your terminal.","archived":false,"fork":false,"pushed_at":"2024-06-29T22:36:46.000Z","size":47,"stargazers_count":58,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-30T04:55:29.732Z","etag":null,"topics":["data","data-science","distribution","jupyter-notebook","machine-learning","neovim","nvim","nvim-config","text-editor","vim"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NoOPeEKS.png","metadata":{"files":{"readme":".github/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":"2024-06-10T18:00:10.000Z","updated_at":"2024-06-29T22:36:49.000Z","dependencies_parsed_at":"2024-06-27T23:22:26.697Z","dependency_job_id":null,"html_url":"https://github.com/NoOPeEKS/DataNvim","commit_stats":null,"previous_names":["noopeeks/datanvim"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NoOPeEKS/DataNvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoOPeEKS%2FDataNvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoOPeEKS%2FDataNvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoOPeEKS%2FDataNvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoOPeEKS%2FDataNvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NoOPeEKS","download_url":"https://codeload.github.com/NoOPeEKS/DataNvim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoOPeEKS%2FDataNvim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278551945,"owners_count":26005479,"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","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["data","data-science","distribution","jupyter-notebook","machine-learning","neovim","nvim","nvim-config","text-editor","vim"],"created_at":"2025-10-06T03:08:35.288Z","updated_at":"2025-10-06T03:12:58.508Z","avatar_url":"https://github.com/NoOPeEKS.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📊 DataNvim\nDataNvim is a custom Neovim distribution prepared for Data Science and to easily run code and interact with Jupyter Notebooks without ever leaving your terminal. It also provides a well structured config that makes it an easy starting point to extend it as you want.\n\n![DataNvim](https://github.com/NoOPeEKS/DataNvim/assets/73296276/4c22d6bd-e8fe-4151-a18f-05694a0154c2)\n\n## 📋 Requirements\n- GCC\n- Kitty 0.28+\n- Neovim 0.9.4+\n- Python 3.10+\n- Ripgrep 11.0+\n- Quarto\n- Npm 10.8.1+\n- ImageMagick\n- Lua 5.1\n- Required python packages:\n    - [`pynvim`](https://github.com/neovim/pynvim)\n    - [`jupyter_client`](https://github.com/jupyter/jupyter_client)\n    - [`cairosvg`](https://cairosvg.org)\n    - [`plotly`](https://plotly.com/python/) and [`kaleido`](https://github.com/plotly/Kaleido)\n    - [`pyperclip`](https://github.com/asweigart/pyperclip)\n    - [`nbformat`](https://github.com/jupyter/nbformat)\n    - [`pillow`](https://pypi.org/project/pillow/)\n    - [`ipykernel`](https://pypi.org/project/ipykernel/)\n\n## ✨ Feature Highlights\n- Carefully designed [configuration](#configuration) file structure for easy extension and modification\n- Beautiful colorscheme from [catppuccin](https://github.com/catppuccin/nvim)\n- Powerful file explorer with [nvim-tree](https://github.com/nvim-tree/nvim-tree.lua)\n- Fuzzy search and preview files, words and gitfiles thanks to [telescope](https://github.com/nvim-telescope/telescope.nvim)\n- Preconfigured highlighting and Lsp Autocompletion for Python thanks to [treesitter](https://github.com/nvim-treesitter/nvim-treesitter) and [nvim-lsp-config](https://github.com/neovim/nvim-lspconfig)\n- Extensible formatting, diagnostics, code actions and completion with [none-ls](https://github.com/nvimtools/none-ls.nvim) and [ruff](https://github.com/astral-sh/ruff)\n- Complete Jupyter Notebook interaction set up thanks to [molten.nvim](https://github.com/benlubas/molten-nvim), [quarto](https://github.com/quarto-dev/quarto-nvim), and [jupytext](https://github.com/GCBallesteros/jupytext.nvim)\n- Simple but beautiful status bar thanks to [lualine.nvim](https://github.com/nvim-lualine/lualine.nvim)\n- Easy buffer navigation with [bufferline.nvim](https://github.com/akinsho/bufferline.nvim)\n\n## 🔍 Want to try our Docker Container first?\n- Pull DataNvim's image from `ghcr.io/noopeeks/data-nvim:latest`\n```bash\ndocker run -it ghcr.io/noopeeks/data-nvim:latest /bin/bash\n# Once inside prompt, run nvim\nnvim\n```\n- Try it out, there is a demo .ipynb file in the home directory!\n\n## 🛠️ Setting up for the first time\n\u003e[!WARNING]\n\u003e DataNvim will only render images if the terminal it's used on is Kitty!\n\n- Install all the listed dependencies\n- Install Kitty\n- Install [luarocks](https://luarocks.org/#quick-start), Lua language's package manager.\n- Install the `magick` rock with: `luarocks --local --lua-version=5.1 install magick`\n- Create a virtual environment for Neovim in `~/.virtualenvs/`\n```bash\nmkdir ~/.virtualenvs\ncd ~/.virtualenvs\npython -m venv neovim\n```\n- Activate the virtual environment and install the beforementioned python packages with:\n```bash\nsource ~/.virtualenvs/neovim/bin/activate\npip install ipykernel jupytext pynvim jupyter_client cairosvg plotly kaleido pyperclip nbformat pillow\npython -m ipykernel\ndeactivate\n```\n- Install ipykernel and jupytext in your project-scoped virtual environment\n```bash\ncd whatever/directory/your/project/is/in\nsource venv/bin/activate\npip install ipykernel jupytext\npython -m ipykernel install --user --name project_name\n```\n- Backup your current Neovim configuration\n```bash\nmv ~/.config/nvim ~/config/nvim.bak\n```\n- Install DataNvim's configuration\n```bash\ngit clone https://github.com/NoOPeEKS/DataNvim.git ~/.config/nvim \u0026\u0026 nvim\n```\n- Run the following commands:\n```vim\n:UpdateRemotePlugins\n:MasonInstallAll\n```\n- Open your notebook with the virtual environment activated and load the kernel with `:MoltenInit project_name` or \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003em\u003c/kbd\u003e + \u003ckbd\u003ei\u003c/kbd\u003e.\n- Start executing cells with [Keybindings](#keybindings)\n\n\n## ⌨️ Keybindings\n\n### Vim actions\n| Key                                                                                      | Mode | Action                              |\n| ---------------------------------------------------------------------------------------- | :--: | ----------------------------------- |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eh\u003c/kbd\u003e                                                           |  i   | Navigate left in insert mode        |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003ej\u003c/kbd\u003e                                                           |  i   | Navigate down in insert mode        |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003ek\u003c/kbd\u003e                                                           |  i   | Navigate up in insert mode          |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003el\u003c/kbd\u003e                                                           |  i   | Navigate right in insert mode       |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003es\u003c/kbd\u003e                                                           |i, v, n| Save current buffer                |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ex\u003c/kbd\u003e                                                          |  n   | Close current buffer                |\n| \u003ckbd\u003eTab\u003c/kbd\u003e                                                                           |  n   | Go to next buffer                   |\n| \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eTab\u003c/kbd\u003e                                                        |  n   | Go to previous buffer               |\n\n### Plugins\n\n#### NvimTree\n| Key                                                                                      | Mode | Action                              |\n| ---------------------------------------------------------------------------------------- | :--: | ----------------------------------- |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003en\u003c/kbd\u003e                                                           |  n   | Toggle file explorer                |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003ej\u003c/kbd\u003e                                                           |  n   | Focus file explorer                 |\n\n#### None-ls\n| Key                                                                                      | Mode | Action                              |\n| ---------------------------------------------------------------------------------------- | :--: | ----------------------------------- |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eg\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e                                           |  n   | Format current buffer               |\n\n#### Molten.nvim\n| Key                                                                                      | Mode | Action                              |\n| ---------------------------------------------------------------------------------------- | :--: | ----------------------------------- |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003em\u003c/kbd\u003e + \u003ckbd\u003ei\u003c/kbd\u003e                                           |  n   | Molten Init Python Kernel           |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003em\u003c/kbd\u003e + \u003ckbd\u003el\u003c/kbd\u003e                                           |  n   | Molten Evaluate Current Line        |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003em\u003c/kbd\u003e + \u003ckbd\u003ev\u003c/kbd\u003e                                           |  v   | Molten Evaluate Visual Selection    |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003em\u003c/kbd\u003e + \u003ckbd\u003eo\u003c/kbd\u003e                                           |  n   | Molten Enter Cell Output            |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003em\u003c/kbd\u003e + \u003ckbd\u003eh\u003c/kbd\u003e                                           |  n   | Molten Hide Output                  |\n\n#### Telescope\n| Key                                                                                      | Mode | Action                              |\n| ---------------------------------------------------------------------------------------- | :--: | ----------------------------------- |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e                                           |  n   | Telescope Fuzzy Find File           |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e                                           |  n   | Telescope Fuzzy Find Word           |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003eb\u003c/kbd\u003e                                           |  n   | Telescope Fuzzy Find Buffers        |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003eo\u003c/kbd\u003e                                           |  n   | Telescope Fuzzy Find Oldfiles       |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003ez\u003c/kbd\u003e                                           |  n   | Telescope Fuzzy Find Current Buffer |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003eh\u003c/kbd\u003e                                           |  n   | Telescope Help Tags                 |\n\n#### LSP\n| Key                                                   | Mode | Action                                  |\n|-------------------------------------------------------| :--: |-----------------------------------------|\n| \u003ckbd\u003eg\u003c/kbd\u003e + \u003ckbd\u003eD\u003c/kbd\u003e                           |  n   | Go to Declaration                       |\n| \u003ckbd\u003eg\u003c/kbd\u003e + \u003ckbd\u003ed\u003c/kbd\u003e                           |  n   | Go to Definition                        |\n| \u003ckbd\u003eK\u003c/kbd\u003e                                          |  n   | Hover                                   |\n| \u003ckbd\u003eg\u003c/kbd\u003e + \u003ckbd\u003ei\u003c/kbd\u003e                           |  n   | Go to Implementation                    |\n| \u003ckbd\u003eleader\u003c/kbd\u003e + \u003ckbd\u003ec\u003c/kbd\u003e + \u003ckbd\u003ea\u003c/kbd\u003e       |  n   | Code Action                             |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003ek\u003c/kbd\u003e                        |  n   | Signature Help                          |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e + \u003ckbd\u003ea\u003c/kbd\u003e        |  n   | Add Workspace Folder                    |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e + \u003ckbd\u003er\u003c/kbd\u003e        |  n   | Remove Workspace Folder                 |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e + \u003ckbd\u003el\u003c/kbd\u003e        |  n   | List Workspace Folders                  |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eD\u003c/kbd\u003e                       |  n   | Go to Type Definition                   |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003er\u003c/kbd\u003e + \u003ckbd\u003en\u003c/kbd\u003e        |  n   | Rename                                  |\n| \u003ckbd\u003eg\u003c/kbd\u003e + \u003ckbd\u003er\u003c/kbd\u003e                           |  n   | List References                         |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ee\u003c/kbd\u003e                       |  n   | Open Diagnostic Float                   |\n| \u003ckbd\u003e[\u003c/kbd\u003e + \u003ckbd\u003ed\u003c/kbd\u003e                           |  n   | Go to Previous Diagnostic               |\n| \u003ckbd\u003e]\u003c/kbd\u003e + \u003ckbd\u003ed\u003c/kbd\u003e                           |  n   | Go to Next Diagnostic                   |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eq\u003c/kbd\u003e                       |  n   | Set to Quickfix list                    | \n\n## ✏️ Configuration\nDataNvim is a very straightforward Neovim distribution that aims to be a batteries-included starting point for Data Science in Neovim. Thus, its directory structure for configuration is meant to be easy to understand:\n```\n├── init.lua                \u003c- Neovim's entrypoint. You should probably not modify anything here. Just require your own files.\n├── lua                     \u003c- Configuration for DataNvim goes here.\n│   ├── plugins.lua         \u003c- Empty table. It will contain everything inside plugins/\n│   ├── vim-options.lua     \u003c- Vim options and general movement keybindings.\n│   ├── plugins             \u003c- This folder contains all of your plugins. To install new ones, create a file and make it return your plugin.\n│   │   └── plugin_name.lua \u003c- Returns a table with the plugin to install and its configuration.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoopeeks%2Fdatanvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoopeeks%2Fdatanvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoopeeks%2Fdatanvim/lists"}