{"id":20730179,"url":"https://github.com/mohabdo21/vim-configuration","last_synced_at":"2025-03-11T09:52:01.364Z","repository":{"id":241395757,"uuid":"806740172","full_name":"Mohabdo21/VIM-Configuration","owner":"Mohabdo21","description":"Neovim configuration. It's set up to provide a richly featured, visually pleasing, and efficient text editing environment.","archived":false,"fork":false,"pushed_at":"2025-02-25T21:04:30.000Z","size":151,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-25T21:35:04.727Z","etag":null,"topics":["lua","nvim","nvim-config","nvim-plugin"],"latest_commit_sha":null,"homepage":"","language":"Lua","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/Mohabdo21.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":"2024-05-27T19:56:12.000Z","updated_at":"2025-02-25T21:04:34.000Z","dependencies_parsed_at":"2024-05-28T05:39:59.765Z","dependency_job_id":"064a3ebe-63ce-41f1-aa8f-0f83f0663c3c","html_url":"https://github.com/Mohabdo21/VIM-Configuration","commit_stats":null,"previous_names":["mohabdo21/vim-configuration"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mohabdo21%2FVIM-Configuration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mohabdo21%2FVIM-Configuration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mohabdo21%2FVIM-Configuration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mohabdo21%2FVIM-Configuration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mohabdo21","download_url":"https://codeload.github.com/Mohabdo21/VIM-Configuration/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243012682,"owners_count":20221606,"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","nvim","nvim-config","nvim-plugin"],"created_at":"2024-11-17T05:10:33.660Z","updated_at":"2025-03-11T09:52:01.353Z","avatar_url":"https://github.com/Mohabdo21.png","language":"Lua","readme":"# Neovim Configuration\n\nThis repository contains my personal Neovim configuration. It's set up to provide a richly featured, visually pleasing, and efficient text editing environment.\n\n## Structure\n\nThe configuration is organized as follows:\n\n- `init.lua`: This is the main configuration file that sources all other configuration files.\n- `lazy-lock.json`: This file contains settings for the lazy-lock plugin.\n- `lua/mohannad`: This directory contains all the Lua configuration files.\n  - `core`: This directory contains core configuration files such as keymaps and options.\n  - `lazy.lua`: This file contains configuration for lazy loading of plugins.\n  - `plugins`: This directory contains configuration files for each individual plugin.\n\n## Plugins\n\nThe configuration uses a variety of plugins to enhance Neovim's functionality. Here are some of the key plugins:\n\n- `alpha-nvim.lua`: Alpha Nvim is a start screen plugin for Neovim.\n- `auto-session.lua`: Auto Session is a plugin that allows you to save and load your Neovim sessions automatically.\n- `bufferline.lua`: Bufferline is a plugin that provides a tab-like interface for managing buffers.\n- `coc.lua`: Conquer of Completion (CoC) is a powerful autocompletion plugin with language server protocol support.\n- `colorizer.lua`: Colorizer is a plugin that colorizes color codes in your code.\n- `colorscheme.lua`: This file is used to configure the colorscheme of your Neovim.\n- `comment.lua`: This plugin provides functionalities to comment and uncomment lines of code.\n- `dressing.lua`: Dressing is a plugin that helps to manage and navigate between different windows in Neovim.\n- `formatting.lua`: This plugin provides code formatting capabilities.\n- `friendly-snippets.lua`: Friendly Snippets is a plugin that provides a collection of snippets for various programming languages.\n- `gitsigns.lua`: GitSigns is a plugin that shows git diff markers in the sign column and stages changes via the buffer.\n- `harpoon.lua`: Harpoon is a plugin that provides mark and navigation functionalities.\n- `lazygit.lua`: LazyGit is a simple terminal UI for git commands.\n- `linting.lua`: This plugin provides linting capabilities in Neovim.\n- `lsp`: This directory contains configurations for the Language Server Protocol (LSP), which provides features like autocompletion, go to definition, and hover documentation.\n- `lua-snip.lua`: Lua Snip is a fast snippet engine for Neovim.\n- `lualine.lua`: Lualine is a lightweight and configurable status line plugin for Neovim.\n- `neogen.lua`: Neogen is a plugin that helps you generate JSDoc comments.\n- `nvim-autopairs.lua`: Nvim Autopairs is a plugin that automatically pairs brackets, quotes, etc.\n- `nvim-cmp.lua`: Nvim Cmp is an autocompletion plugin for Neovim.\n- `nvim-surround.lua`: Nvim Surround is a plugin that provides functionalities to deal with pairs of \"surroundings\".\n- `nvim-tree.lua`: Nvim Tree is a file explorer tree for Neovim.\n- `nvim-treesitter-text-objects.lua`: This plugin provides text objects based on the Treesitter AST.\n- `nvim-treesitter.lua`: Nvim Treesitter is a plugin that provides syntax highlighting and other features based on the Treesitter parsing library.\n- `nvim-web-devicons.lua`: Nvim Web Devicons is a plugin that provides icons for file types.\n- `substitute.lua`: This plugin provides functionalities to substitute text.\n- `telescope.lua`: Telescope is a highly extendable fuzzy finder over lists.\n- `todo-comments.lua`: Todo Comments is a plugin that provides functionalities to manage TODO comments.\n- `vim-maximizer.lua`: Vim Maximizer is a plugin that maximizes and minimizes windows in Vim.\n- `which-key.lua`: Which Key is a plugin that displays available keybindings in popup menu.\n\n## LSP\n\nThe configuration also includes setup for various Language Server Protocols (LSPs) to provide features like autocompletion, formatting, and linting for various programming languages.\n\n## System Dependencies\n\nThis Neovim configuration requires several system dependencies to function correctly. Below is a comprehensive list of the required dependencies, categorized by their usage:\n\n### General Requirements\n\n1. **Neovim**: You should be running Neovim v0.9.0 or later.\n2. **Git**: Many Neovim plugins are hosted on GitHub and are installed via Git. Ensure you have Git installed, preferably version 2.19.0 or later for partial clone support.\n3. **Python**: Some plugins may require Python and the associated package manager pip. You may also need certain Python packages like `autopep8`, `black`, and `isort` for Python formatting and linting.\n4. **Node.js and npm**: Required for plugins written in JavaScript or TypeScript, or for those providing language servers for JavaScript or TypeScript.\n5. **Rust**: Required for plugins written in Rust or providing Rust language server support. Ensure you have Rust and its package manager Cargo installed.\n6. **Go**: Required for plugins written in Go or providing Go language server support. Ensure you have Go installed.\n7. **ShellCheck**: Required for shell script linting.\n8. **CMake and build-essential**: Required for building some plugins from source.\n9. **FUSE libraries**: Required for certain plugins.\n10. **A Nerd Font**: Required for plugins that add icons to Neovim, such as `nvim-web-devicons`.\n\n### Plugin-Specific Dependencies\n\n1. **Alpha Nvim (`alpha-nvim.lua`)**: No additional dependencies.\n2. **Auto Session (`auto-session.lua`)**: No additional dependencies.\n3. **Bufferline (`bufferline.lua`)**: No additional dependencies.\n4. **CoC (`coc.lua`)**:\n   - **Node.js**: `npm install -g neovim`\n   - Install language servers and extensions via `:CocInstall`.\n5. **Colorizer (`colorizer.lua`)**: No additional dependencies.\n6. **Colorscheme (`colorscheme.lua`)**: Specific colorschemes may require their own installation.\n7. **Comment (`comment.lua`)**: No additional dependencies.\n8. **Dressing (`dressing.lua`)**: No additional dependencies.\n9. **Formatting (`formatting.lua`)**:\n   - **Python**: `pip install black autopep8 isort`\n   - **Node.js**: `npm install -g prettier eslint`\n   - **Rust**: `cargo install rustfmt`\n   - **Go**: `go get -u golang.org/x/tools/cmd/goimports`\n10. **Friendly Snippets (`friendly-snippets.lua`)**: No additional dependencies.\n11. **GitSigns (`gitsigns.lua`)**:\n    - **Git**: Ensure Git is installed.\n12. **Harpoon (`harpoon.lua`)**: No additional dependencies.\n13. **LazyGit (`lazygit.lua`)**:\n    - **LazyGit**: `brew install lazygit` (macOS) or follow installation instructions for other OS.\n14. **Linting (`linting.lua`)**:\n    - **Python**: `pip install pylint`\n    - **Node.js**: `npm install -g eslint`\n15. **LSP (`lsp`)**:\n    - **Language Servers**: Install language servers using `:LspInstall` or manually.\n    - **Python**: `pip install pylsp`\n    - **Node.js**: `npm install -g typescript typescript-language-server`\n    - **Rust**: `rustup component add rls rust-analysis rust-src`\n    - **Go**: `go get -u golang.org/x/tools/gopls`\n16. **LuaSnip (`lua-snip.lua`)**: No additional dependencies.\n17. **Lualine (`lualine.lua`)**: No additional dependencies.\n18. **Neogen (`neogen.lua`)**: No additional dependencies.\n19. **Nvim Autopairs (`nvim-autopairs.lua`)**: No additional dependencies.\n20. **Nvim Cmp (`nvim-cmp.lua`)**: No additional dependencies.\n21. **Nvim Surround (`nvim-surround.lua`)**: No additional dependencies.\n22. **Nvim Tree (`nvim-tree.lua`)**:\n    - **Nerd Font**: Install a Nerd Font for file icons.\n23. **Nvim Treesitter (`nvim-treesitter.lua`, `nvim-treesitter-text-objects.lua`)**:\n    - **C Compiler**: Ensure you have a C compiler installed (e.g., `gcc` or `clang`).\n24. **Nvim Web Devicons (`nvim-web-devicons.lua`)**:\n    - **Nerd Font**: Install a Nerd Font for file icons.\n25. **Substitute (`substitute.lua`)**: No additional dependencies.\n26. **Telescope (`telescope.lua`)**:\n    - **Ripgrep**: `brew install ripgrep` (macOS) or follow installation instructions for other OS.\n    - **fd**: `brew install fd` (macOS) or follow installation instructions for other OS.\n27. **Todo Comments (`todo-comments.lua`)**: No additional dependencies.\n28. **Vim Maximizer (`vim-maximizer.lua`)**: No additional dependencies.\n29. **Which Key (`which-key.lua`)**: No additional dependencies.\n\n## Installation\n\n### On Ubuntu\n\n1. **Install Neovim**\n\n   ```bash\n   sudo apt update\n   sudo apt install neovim\n   ```\n\n   If you faced any issues refer to official nvim [repo](https://github.com/neovim/neovim/blob/master/INSTALL.md#install-from-download)\n\n2. **Install Git**\n\n   ```bash\n   sudo apt install git\n   ```\n\n3. **Install Python and pip**\n\n   ```bash\n   sudo apt install python3 python3-pip\n   ```\n\n4. **Install Node.js and npm**\n\n   ```bash\n   sudo apt install nodejs npm\n   ```\n\n5. **Install Rust**\n\n   ```bash\n   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n   ```\n\n6. **Install Go**\n\n   ```bash\n   sudo apt install golang\n   ```\n\n7. **Install ShellCheck**\n\n   ```bash\n   sudo apt install shellcheck\n   ```\n\n8. **Install CMake and build-essential**\n\n   ```bash\n   sudo apt install cmake build-essential\n   ```\n\n9. **Install FUSE libraries**\n\n   ```bash\n   sudo apt install fuse\n   ```\n\n10. **Install a Nerd Font**\n\n    Download and install a Nerd Font from [Nerd Fonts GitHub](https://github.com/ryanoasis/nerd-fonts/releases).\n\n### On macOS\n\n1. **Install Neovim**\n\n   ```bash\n   brew install neovim\n   ```\n\n   If you faced any issues refer to official nvim [repo](https://github.com/neovim/neovim/blob/master/INSTALL.md#install-from-download)\n\n2. **Install Git**\n\n   ```bash\n   brew install git\n   ```\n\n3. **Install Python and pip**\n\n   ```bash\n   brew install python\n   ```\n\n4. **Install Node.js and npm**\n\n   ```bash\n   brew install node\n   ```\n\n5. **Install Rust**\n\n   ```bash\n   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n   ```\n\n6. **Install Go**\n\n   ```bash\n   brew install go\n   ```\n\n7. **Install ShellCheck**\n\n   ```bash\n   brew install shellcheck\n   ```\n\n8. **Install CMake and build-essential**\n\n   ```bash\n   brew install cmake\n   ```\n\n9. **Install a Nerd Font**\n\n   Download and install a Nerd Font from [Nerd Fonts GitHub](https://github.com/ryanoasis/nerd-fonts/releases).\n\n## Usage\n\n1. **Clone the Repository**\n\n   ```bash\n   git clone https://github.com/Mohabdo21/VIM-Configuration.git\n   cd VIM-Configuration\n   ```\n\n2. **Backup Your Current Neovim Configuration**\n\n   ```bash\n   mv ~/.config/nvim ~/.config/nvim.bak\n   ```\n\n3. **Copy the New Configuration**\n\n   ```bash\n   cp -r ./nvim ~/.config/\n   ```\n\n4. **Run Neovim**\n\n   ```bash\n   nvim\n   ```\n\n### Update you Neovim (AppImage)\n\nUpdate Script\n\nA script named `update_nvim.sh` has been added to simplify updating Neovim binary if not installed via package manager.\n\n- **Usage:**\n\nTo run the update script make sure it's executable `chmod +x`, then execute the following command from the repository's root directory:\n\n`./update_nvim.sh`\n\nThis script will check for the neovim updates and update you current installation.\n\n### Notes\n\n- Ensure you follow the official installation instructions for dependencies based on your operating system.\n- The listed dependencies are comprehensive but may require adjustments based on specific plugins or updates to the configuration.\n\nThis configuration is personalized to my own usage. Feel free to modify it to suit your needs.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohabdo21%2Fvim-configuration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmohabdo21%2Fvim-configuration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohabdo21%2Fvim-configuration/lists"}