https://github.com/bengtfrost/nvim-config
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
https://github.com/bengtfrost/nvim-config
dotfiles-nvim fedora lazy-nvim linux lsp lua nvim nvim-config telescope
Last synced: 19 days ago
JSON representation
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
- Host: GitHub
- URL: https://github.com/bengtfrost/nvim-config
- Owner: bengtfrost
- License: mit
- Created: 2025-04-05T13:21:37.000Z (28 days ago)
- Default Branch: master
- Last Pushed: 2025-04-14T10:33:42.000Z (19 days ago)
- Last Synced: 2025-04-14T19:18:28.360Z (19 days ago)
- Topics: dotfiles-nvim, fedora, lazy-nvim, linux, lsp, lua, nvim, nvim-config, telescope
- Language: Lua
- Homepage:
- Size: 2.22 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# My Neovim Configuration
[](https://lua.org)
[](https://neovim.io/)
[](https://opensource.org/licenses/MIT)This 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.
## ✨ Features
* **🚀 Fast Startup:** Utilizes `folke/lazy.nvim` for plugin management and lazy loading.
* **💻 LSP Integration:** Out-of-the-box support for Lua, Python, TypeScript/JavaScript via `nvim-lspconfig` and `mason.nvim`.
* **💅 Formatting:** Consistent code formatting via `stevearc/conform.nvim` using standard tools ( Ruff, Black, Prettier, Stylua, etc.). Format on save enabled.
* **🤖 Completion:** Smooth completion experience powered by `nvim-cmp` and `LuaSnip`.
* **🌳 File Explorer:** Integrated file tree using `nvim-tree.lua`.
* **🔭 Fuzzy Finding:** Powerful fuzzy finding capabilities with `telescope.nvim`.
* **🎨 Colorscheme:** Uses `EdenEast/nightfox.nvim` (`carbonfox` variant).
* **💡 Syntax Highlighting:** Enhanced syntax highlighting via `nvim-treesitter`.
* **⌨️ Keymap Guide:** `folke/which-key.nvim` provides helpful keybinding popups.
* **🔧 Well-structured:** Modular configuration organized into logical directories (`core`, `plugins`).
* **⚙️ Sensible Defaults:** Optimized core Neovim settings for a better editing experience.
* **🐍 Python Ready:** Configured for Neovim's Python provider and `pyright` LSP.## 📸 Screenshots
*(NvimTree View)*
*(NvimTree View with Aider AI)*
*(Telescope FZF View)*
## 💾 Installation
**Prerequisites:**
* [Neovim](https://neovim.io/) **v0.11.0+** *(Updated)*
* [Git](https://git-scm.com/)
* [Make](https://www.gnu.org/software/make/) (for building `telescope-fzf-native`)
* A [Nerd Font](https://www.nerdfonts.com/) installed and configured in your terminal (for icons)
* Python 3 and `pip` (or `uv`) for installing the Neovim provider: `pip install --user pynvim` (or globally)
* (Recommended) `ripgrep` (for Telescope live grep), `fd` (for Telescope find files performance).
* (Recommended) Node.js/npm (for some LSPs/formatters installed via Mason like `pyright`, `typescript-language-server`, `prettierd`).**Steps:**
1. **Backup your existing Neovim configuration (if any):**
```bash
mv ~/.config/nvim ~/.config/nvim.bak
# Optional but safer: backup local data/state/cache too
# mv ~/.local/share/nvim ~/.local/share/nvim.bak
# mv ~/.local/state/nvim ~/.local/state/nvim.bak
# mv ~/.cache/nvim ~/.cache/nvim.bak
```2. **Clone this repository:**
```bash
git clone https://github.com/bengtfrost/nvim-config ~/.config/nvim
```3. **Start Neovim:**
```bash
nvim
```
* `lazy.nvim` will automatically bootstrap itself and install all the configured plugins on the first run.
* **Important:** `Mason` will attempt to install required LSPs and **Formatters** (`pyright`, `lua_ls`, `typescript-language-server`, `stylua`, `black`, `ruff`, `prettierd`, `taplo`, etc.) listed in `ensure_installed`. If any fail (e.g., due to missing system dependencies like Node.js for `prettierd`), run `:Mason` after startup to see the status and install them manually (`:MasonInstall `). You might need to install Node.js or other build tools separately.## ⚙️ Configuration Structure
This configuration follows a modular structure:
* **`init.lua`**: The main entry point. Sets leader key, loads core modules, bootstraps `lazy.nvim`, sets global diagnostics config & autocommands.
* **`assets/`**: Directory for static assets like images.
* **`lua/core/`**: Contains base Neovim settings.
* `options.lua`: Core editor settings (`vim.opt`).
* `keymaps.lua`: Global, non-plugin keybindings (`vim.keymap.set`).
* **`lua/plugins/`**: Contains configurations for plugins managed by `lazy.nvim`. Each `.lua` file defines one or more related plugins.
* `colorscheme.lua`: Theme setup (`nightfox.nvim`).
* `comment.lua`: Commenting (`Comment.nvim`).
* `completion.lua`: Completion engine (`nvim-cmp`, `LuaSnip`).
* **`formatter.lua`**: Formatting engine (`conform.nvim`). *(New)*
* `lsp.lua`: Language Server Protocol setup (`nvim-lspconfig`, `mason.nvim`, LSP definitions).
* `telescope.lua`: Fuzzy finder (`telescope.nvim`, dependencies).
* `treesitter.lua`: Syntax engine (`nvim-treesitter`).
* `ui.lua`: File explorer (`nvim-tree.lua`, icons).
* `utils.lua`: Utility plugins (`which-key.nvim`, `mini.icons`).## ⌨️ Keybindings
* **Leader Key:** ``
* Press `` in Normal Mode and wait briefly to see available mappings via Which-Key.
* Primary format command: `fd` (uses `conform.nvim`).
* Refer to the [Keymap Summary](KEYMAPS.md) for a detailed list of all mappings. *(Remember to resolve the `fd` overlap between Conform and Telescope Diagnostics)*## 🤝 Contributing
This is a personal configuration, but suggestions or improvements are welcome via issues or pull requests.
## 📜 License
Distributed under the MIT License. See [LICENSE](LICENSE) for more information.