{"id":27435997,"url":"https://github.com/bengtfrost/nvim-config","last_synced_at":"2025-07-06T08:35:12.472Z","repository":{"id":286290380,"uuid":"960969440","full_name":"bengtfrost/nvim-config","owner":"bengtfrost","description":"My personal Neovim config in Lua 🚀 | Fast startup with Lazy.nvim | LSP (Pyright, LuaLS, TSServer), Completion (Cmp+LuaSnip), Telescope, Treesitter, NvimTree | Nightfox Theme | Tested on Fedora/Sway/Foot","archived":false,"fork":false,"pushed_at":"2025-04-14T10:33:42.000Z","size":2332,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-14T19:18:28.360Z","etag":null,"topics":["dotfiles-nvim","fedora","lazy-nvim","linux","lsp","lua","nvim","nvim-config","telescope"],"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/bengtfrost.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":"2025-04-05T13:21:37.000Z","updated_at":"2025-04-14T10:33:46.000Z","dependencies_parsed_at":"2025-04-05T14:38:16.364Z","dependency_job_id":null,"html_url":"https://github.com/bengtfrost/nvim-config","commit_stats":null,"previous_names":["bengtfrost/nvim-config"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengtfrost%2Fnvim-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengtfrost%2Fnvim-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengtfrost%2Fnvim-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengtfrost%2Fnvim-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bengtfrost","download_url":"https://codeload.github.com/bengtfrost/nvim-config/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248943462,"owners_count":21186958,"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-nvim","fedora","lazy-nvim","linux","lsp","lua","nvim","nvim-config","telescope"],"created_at":"2025-04-14T19:18:31.204Z","updated_at":"2025-07-06T08:35:12.465Z","avatar_url":"https://github.com/bengtfrost.png","language":"Lua","readme":"# My Neovim Configuration\n\n[![Lua](https://img.shields.io/badge/Made%20with%20Lua-blueviolet.svg?style=for-the-badge\u0026logo=lua)](https://lua.org)\n[![Neovim](https://img.shields.io/badge/Neovim-0.11+-57A143?style=for-the-badge\u0026logo=neovim\u0026logoColor=white)](https://neovim.io/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)\n\nThis repository contains my personal Neovim configuration files, built with Lua and optimized for development workflows on Linux (specifically tested on Fedora with Sway/Foot). It aims for a balance between features, performance, and maintainability using modern Neovim plugins and practices, **including configuration for `molten-nvim` to enable direct interaction with Jupyter kernels and `.ipynb` files within Neovim.**\n\n## ✨ Features\n\n*   **🚀 Fast Startup:** Utilizes `folke/lazy.nvim` for plugin management and lazy loading.\n*   **💻 LSP Integration:** Out-of-the-box support for Lua, Python, TypeScript/JavaScript via `nvim-lspconfig` and `mason.nvim`.\n*   **💅 Formatting:** Consistent code formatting via `stevearc/conform.nvim` using standard tools (Ruff, Black, Prettier, Stylua, etc.). Format on save enabled.\n*   **🤖 Completion:** Smooth completion experience powered by `nvim-cmp` and `LuaSnip`.\n*   **🌳 File Explorer:** Integrated file tree using `nvim-tree.lua`.\n*   **🔭 Fuzzy Finding:** Powerful fuzzy finding capabilities with `telescope.nvim`.\n*   **🎨 Colorscheme:** Uses `olimorris/onedarkpro.nvim`.\n*   **💡 Syntax Highlighting:** Enhanced syntax highlighting via `nvim-treesitter`.\n*   **⌨️ Keymap Guide:** `folke/which-key.nvim` provides helpful keybinding popups.\n*   **📓 Jupyter Integration:** Interact with Jupyter kernels and `.ipynb` files directly within Neovim using `benlubas/molten-nvim`. Supports connecting to kernels, viewing outputs, and executing code line-by-line or by selection from the raw `.ipynb` JSON view.\n*   **🔧 Well-structured:** Modular configuration organized into logical directories (`core`, `plugins`).\n*   **⚙️ Sensible Defaults:** Optimized core Neovim settings for a better editing experience.\n*   **🐍 Python Ready:** Configured for Neovim's Python provider and `pyright` LSP.\n\n## 📸 Screenshots\n\n*(NvimTree View)*\n![NvimTree Example](https://raw.githubusercontent.com/bengtfrost/nvim-config/master/assets/nvim-treeview.png)\n\n*(NvimTree View with Aider AI)*\n![NvimTree Example with Aider](https://raw.githubusercontent.com/bengtfrost/nvim-config/master/assets/nvim-treeview_aider-chat.png)\n\n*(Telescope FZF View)*\n![Telescope Example](https://raw.githubusercontent.com/bengtfrost/nvim-config/master/assets/nvim-telescope.png)\n\n## 💾 Installation\n\n**Prerequisites:**\n\n*   [Neovim](https://neovim.io/) **v0.11.0+**\n*   [Git](https://git-scm.com/)\n*   [Make](https://www.gnu.org/software/make/) (for building `telescope-fzf-native`)\n*   A [Nerd Font](https://www.nerdfonts.com/) installed and configured in your terminal (for icons)\n*   **Python 3 \u0026 Environment Setup:**\n    *   **For Neovim Host:** Ensure `pip` is available for the Python Neovim uses (check `:checkhealth provider`). Install the required host packages:\n        ```bash\n        # Example using system python identified by checkhealth:\n        /usr/bin/python3 -m pip install --user pynvim\n        # OR (if using a dedicated venv for nvim host):\n        # /path/to/nvim_host_venv/bin/python -m pip install pynvim\n        ```\n    *   **For Jupyter/Molten Host Features:** Install these packages using the **same Neovim host Python**:\n        ```bash\n        # Example using system python:\n        sudo /usr/bin/python3 -m pip install jupyter_client nbformat\n        # OR (if using pip install --user):\n        # /usr/bin/python3 -m pip install --user jupyter_client nbformat\n        # OR (if using dedicated venv):\n        # /path/to/nvim_host_venv/bin/python -m pip install jupyter_client nbformat\n        ```\n        *(Note: On systems like Fedora, installing `python3-neovim`, `python3-jupyter-client`, `python3-nbformat` via `dnf` might achieve the same result for the system Python).*\n    *   **For Kernel Environment:** Ensure `ipykernel` and `notebook` (or `jupyterlab`) are installed in the Python virtual environment(s) you intend to run your Jupyter kernels from.\n        ```bash\n        # Example within your project venv:\n        # pip install ipykernel notebook\n        ```\n*   (Recommended) `ripgrep` (for Telescope live grep), `fd` (for Telescope find files performance).\n*   (Recommended) Node.js/npm (for some LSPs/formatters installed via Mason like `pyright`, `typescript-language-server`, `prettierd`).\n\n**Steps:**\n\n1.  **Backup your existing Neovim configuration (if any):**\n    ```bash\n    # Backup config\n    mv ~/.config/nvim ~/.config/nvim.bak\n    # Optional: Backup data/state/cache\n    # mv ~/.local/share/nvim ~/.local/share/nvim.bak\n    # mv ~/.local/state/nvim ~/.local/state/nvim.bak\n    # mv ~/.cache/nvim ~/.cache/nvim.bak\n    ```\n\n2.  **Clone this repository:**\n    ```bash\n    git clone https://github.com/bengtfrost/nvim-config ~/.config/nvim\n    ```\n\n3.  **Start Neovim:**\n    ```bash\n    nvim\n    ```\n    *   `lazy.nvim` will automatically bootstrap itself and install/update all the configured plugins on the first run. Make sure you restart Neovim after the plugin updates are complete.\n    *   **Molten Requirement:** After the first install of `molten-nvim` (or after updates), run `:UpdateRemotePlugins` inside Neovim and then **restart Neovim**.\n    *   **Mason:** Mason will attempt to install LSPs and Formatters. If any fail, run `:Mason` after startup to manage them.\n\n## ⚙️ Configuration Structure\n\nThis configuration follows a modular structure:\n\n*   **`init.lua`**: Main entry point.\n*   **`assets/`**: Static assets.\n*   **`lua/core/`**: Base Neovim settings (`options.lua`, `keymaps.lua`).\n*   **`lua/plugins/`**: Plugin configurations managed by `lazy.nvim`.\n    *   `colorscheme.lua`: Theme (`onedarkpro.nvim`).\n    *   `comment.lua`: Commenting (`Comment.nvim`).\n    *   `completion.lua`: Completion (`nvim-cmp`, `LuaSnip`).\n    *   `formatter.lua`: Formatting (`conform.nvim`).\n    *   `lsp.lua`: LSP setup (`nvim-lspconfig`, `mason.nvim`).\n    *   `molten.lua`: Jupyter integration (`molten-nvim`).\n    *   `telescope.lua`: Fuzzy finder (`telescope.nvim`).\n    *   `treesitter.lua`: Syntax engine (`nvim-treesitter`).\n    *   `ui.lua`: File explorer (`nvim-tree.lua`).\n    *   `utils.lua`: Utility plugins (`which-key.nvim`, `mini.icons`).\n\n## ⌨️ Keybindings\n\n*   **Leader Key:** `\u003cSpace\u003e`\n*   Press `\u003cSpace\u003e` in Normal Mode and wait briefly to see available mappings via Which-Key. Specific groups exist for Telescope (`\u003cleader\u003ef`), LSP (`\u003cleader\u003el`, `\u003cleader\u003ec`, `\u003cleader\u003ew`), Molten (`\u003cleader\u003ej`), etc.\n*   Primary format command: `\u003cleader\u003efd` (uses `conform.nvim`).\n*   Refer to the [Keymap Summary](KEYMAPS.md) for a detailed list of all mappings. *(Remember to resolve the `\u003cleader\u003efd` overlap between Conform and Telescope Diagnostics if desired)*\n\n## 🤝 Contributing\n\nThis is a personal configuration, but suggestions or improvements are welcome via issues or pull requests.\n\n## 📜 License\n\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbengtfrost%2Fnvim-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbengtfrost%2Fnvim-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbengtfrost%2Fnvim-config/lists"}