{"id":26030306,"url":"https://github.com/amr-khaled-ahmed/nvim","last_synced_at":"2026-05-06T13:38:39.903Z","repository":{"id":276462542,"uuid":"928506519","full_name":"Amr-Khaled-Ahmed/nvim","owner":"Amr-Khaled-Ahmed","description":"this is nvim configuration ","archived":false,"fork":false,"pushed_at":"2025-03-24T19:39:58.000Z","size":61,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T20:33:34.770Z","etag":null,"topics":["config","configuration","cybersecurity","ide","linux","lua","lua-programming","nvim"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Amr-Khaled-Ahmed.png","metadata":{"files":{"readme":"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":"2025-02-06T18:42:06.000Z","updated_at":"2025-03-24T19:40:01.000Z","dependencies_parsed_at":"2025-03-24T20:27:41.546Z","dependency_job_id":"559da0fe-f487-4682-8b12-80ae142915d6","html_url":"https://github.com/Amr-Khaled-Ahmed/nvim","commit_stats":null,"previous_names":["amr-khaled-ahmed/nvim"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Amr-Khaled-Ahmed/nvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Amr-Khaled-Ahmed%2Fnvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Amr-Khaled-Ahmed%2Fnvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Amr-Khaled-Ahmed%2Fnvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Amr-Khaled-Ahmed%2Fnvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Amr-Khaled-Ahmed","download_url":"https://codeload.github.com/Amr-Khaled-Ahmed/nvim/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Amr-Khaled-Ahmed%2Fnvim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281163793,"owners_count":26454255,"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-26T02:00:06.575Z","response_time":61,"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":["config","configuration","cybersecurity","ide","linux","lua","lua-programming","nvim"],"created_at":"2025-03-06T18:28:25.648Z","updated_at":"2025-10-26T20:05:05.378Z","avatar_url":"https://github.com/Amr-Khaled-Ahmed.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Neovim Configuration Overview\n\nWelcome to the comprehensive guide for your Neovim setup. This document details the structure, purpose, and customization of your configuration files, helping you understand and maintain your setup with ease.\n\n---\n\n## Table of Contents\n\n1. [Introduction](#introduction)\n2. [Directory Structure](#directory-structure)\n3. [Configuration Files](#configuration-files)\n   - [init.lua](#initlua)\n   - [lua/config/](#luaconfig)\n   - [lua/plugins/](#luaplugins)\n4. [Plugins and Their Roles](#plugins-and-their-roles)\n5. [Keybindings](#keybindings)\n6. [Conclusion](#conclusion)\n\n---\n\n## Introduction\n\nThis Neovim configuration is designed to be **modular** and **extensible**. It leverages **Lazy.nvim** for plugin management and organizes settings into dedicated modules for clarity. The setup focuses on:\n\n- **Core Neovim settings:** Options, autocommands, and keymaps.\n- **Plugin integrations:** LSP, Treesitter, Telescope, Git, and more.\n- **UI enhancements:** Improved command-line interface, file explorer, and status line.\n\n---\n\n## Directory Structure\n\nYour configuration is organized as follows:\n\n```\n~/appdata/nvim/\n├── init.lua                    # Entry point\n├── lua/\n│   ├── config/                 # Core configuration settings\n│   │   ├── autocmds.lua        # Auto commands (e.g., remove trailing spaces)\n│   │   ├── keymaps.lua         # Custom keybindings (using which-key)\n│   │   ├── options.lua         # Neovim options (line numbers, splits, clipboard)\n│   ├── plugins/                # Plugin configurations\n│   │   ├── core.lua            # Core plugins and utilities\n│   │   ├── lsp.lua             # Language Server Protocol (LSP) settings\n│   │   ├── ui.lua              # UI enhancements (statusline, file explorer, etc.)\n│   │   ├── git.lua             # Git integration using Gitsigns\n│   │   ├── tools.lua           # Tools (Treesitter, formatters, etc.)\n│   │   ├── telescope.lua       # Telescope configuration for fuzzy finding\n│   │   ├──neo-tree\n│   │   ├── dap.lua             # debugger for c, cpp, py(not work now)\n│   ├── utils.lua               # Utility functions\n│   ├── plugins.lua             # Main plugin loader (Lazy.nvim setup)\n```\n\n---\n\n## Configuration Files\n\n### init.lua\n\nThe `init.lua` file bootstraps Lazy.nvim and loads all the necessary configurations. It serves as the entry point for Neovim.\n\n```lua\n-- init.lua\n\n-- Bootstrap lazy.nvim\nlocal lazypath = vim.fn.stdpath(\"data\") .. \"/lazy/lazy.nvim\"\nif not vim.loop.fs_stat(lazypath) then\n  vim.fn.system({\n    \"git\",\n    \"clone\",\n    \"--filter=blob:none\",\n    \"https://github.com/folke/lazy.nvim.git\",\n    \"--branch=stable\", -- Use the latest stable release\n    lazypath,\n  })\nend\nvim.opt.rtp:prepend(lazypath)\n\n-- Load plugins\nrequire(\"lazy\").setup(\"plugins\")\n\n-- Load configurations\nrequire(\"config.options\")\nrequire(\"config.keymaps\")\nrequire(\"config.autocmds\")\n```\n\n### lua/config/\n\n#### options.lua\n\nSets fundamental options such as line numbers, clipboard, and split behaviors.\n\n```lua\n-- lua/config/options.lua\nvim.opt.number = true             -- Enable absolute line numbers\nvim.opt.relativenumber = true     -- Enable relative line numbers for easier navigation\nvim.opt.clipboard = \"unnamedplus\" -- Integrate system clipboard\nvim.opt.splitright = true         -- Vertical splits open to the right\nvim.opt.splitbelow = true         -- Horizontal splits open below\n```\n\n#### keymaps.lua\n\nDefines custom keybindings using the `which-key` plugin for an improved user experience.\n\n```lua\n-- lua/config/keymaps.lua\nlocal wk = require(\"which-key\")\n\nwk.register({\n  e = { \"\u003ccmd\u003eNvimTreeToggle\u003cCR\u003e\", \"Toggle File Explorer\" },\n  s = { \"\u003ccmd\u003ew\u003cCR\u003e\", \"Save File\" },\n  q = { \"\u003ccmd\u003eq\u003cCR\u003e\", \"Quit Neovim\" },\n  f = { \"\u003ccmd\u003eTelescope find_files\u003cCR\u003e\", \"Find Files\" },\n}, { prefix = \"\u003cleader\u003e\" })\n```\n\n### lua/plugins/\n\nEach file in this directory is responsible for configuring a specific group of plugins.\n\n#### git.lua\n\nIntegrates Git using `gitsigns.nvim` to display inline diff indicators and provide hunk actions.\n\n```lua\n-- lua/plugins/git.lua\nreturn {\n  {\n    \"lewis6991/gitsigns.nvim\",\n    config = function()\n      require(\"gitsigns\").setup({\n        signs = {\n          add = { text = \"+\", hl = \"GitSignsAdd\" },\n          change = { text = \"~\", hl = \"GitSignsChange\" },\n          delete = { text = \"_\", hl = \"GitSignsDelete\" },\n        },\n      })\n    end,\n  },\n}\n```\n\n---\n\n## Plugins and Their Roles\n\n### Core Plugins\n- **Lazy.nvim**: Manages plugins and loads them on demand.\n- **Plenary.nvim**: A Lua utility library used by many plugins.\n\n### LSP \u0026 Completion\n- **nvim-lspconfig**: Simplifies configuration of language servers.\n- **Mason.nvim**: Manages installation of LSPs, linters, and formatters.\n- **nvim-cmp**: Provides a fast and extensible autocompletion engine.\n\n### UI Enhancements\n- **Noice.nvim**: Enhances the command-line UI (configured to appear at the top).\n- **Nvim-tree.lua**: A file explorer for navigating your project.\n- **Lualine.nvim**: A customizable status line for improved UI.\n\n### Git Integration\n- **Gitsigns.nvim**: Displays inline Git diff indicators and provides hunk actions.\n\n### Tools\n- **nvim-treesitter**: Improves syntax highlighting, indentation, and overall code understanding.\n- **null-ls.nvim**: Integrates external formatters and linters directly into Neovim.\n- **Telescope.nvim**: Offers a fuzzy finder for quick navigation.\n\n---\n\n## Keybindings\n\nKey mappings are defined in `lua/config/keymaps.lua` using the `which-key` plugin to create an intuitive, menu-driven approach:\n\n- **File Management:**  \n  - `\u003cleader\u003ee` toggles the file explorer.  \n  - `\u003cleader\u003es` saves the current file.\n\n- **Git Actions:**  \n  - Custom mappings in `git.lua` allow you to stage, preview, and navigate Git hunks.\n\n- **Fuzzy Finding:**  \n  - `\u003cleader\u003ef` launches Telescope for file search.\n\n---\n\n## Conclusion\n\nThis Neovim configuration is designed for **efficiency**, **clarity**, and **extensibility**. With a modular structure that separates core settings, plugin configurations, and custom keybindings, you have a powerful environment for development.\n\nHappy coding and customization in Neovim! 🚀\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famr-khaled-ahmed%2Fnvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famr-khaled-ahmed%2Fnvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famr-khaled-ahmed%2Fnvim/lists"}