{"id":13413147,"url":"https://github.com/doctorfree/nvim-lazyman","last_synced_at":"2025-03-14T19:31:37.701Z","repository":{"id":129981167,"uuid":"611463560","full_name":"doctorfree/nvim-lazyman","owner":"doctorfree","description":"Neovim configuration manager and Lazy/Lua/Mason based Neovim config. Manage multiple Neovim configurations with the lazyman command.  ☕","archived":false,"fork":false,"pushed_at":"2024-06-23T18:02:40.000Z","size":8183,"stargazers_count":252,"open_issues_count":4,"forks_count":7,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-07-31T20:51:57.948Z","etag":null,"topics":["configuration-management","neovim","neovim-configuration","neovim-configuration-manager","neovim-lua"],"latest_commit_sha":null,"homepage":"https://lazyman.dev","language":"HTML","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/doctorfree.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"doctorfree"}},"created_at":"2023-03-08T21:59:42.000Z","updated_at":"2024-07-31T08:41:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"cbd9be05-1f77-4cde-b5af-0156ab9acd72","html_url":"https://github.com/doctorfree/nvim-lazyman","commit_stats":null,"previous_names":[],"tags_count":98,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doctorfree%2Fnvim-lazyman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doctorfree%2Fnvim-lazyman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doctorfree%2Fnvim-lazyman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doctorfree%2Fnvim-lazyman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/doctorfree","download_url":"https://codeload.github.com/doctorfree/nvim-lazyman/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243635268,"owners_count":20322906,"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":["configuration-management","neovim","neovim-configuration","neovim-configuration-manager","neovim-lua"],"created_at":"2024-07-30T20:01:34.119Z","updated_at":"2025-03-14T19:31:37.053Z","avatar_url":"https://github.com/doctorfree.png","language":"HTML","funding_links":["https://github.com/sponsors/doctorfree"],"categories":["Preconfigured Configuration","HTML","Pre-made Configuration"],"sub_categories":["Competitive Programming","Stats Tracking"],"readme":"\u003ch1 align=\"center\"\u003eLazyman Neovim Configuration Manager\u003c/h1\u003e\n\n```bash\n# Install lazyman with the following two commands:\ngit clone https://github.com/doctorfree/nvim-lazyman $HOME/.config/nvim-Lazyman\n$HOME/.config/nvim-Lazyman/lazyman.sh\n```\n\n\u003cdiv align=\"center\"\u003e\u003cp\u003e\n    \u003ca href=\"https://github.com/neovim/neovim\"\u003e\u003cimg src=\"https://img.shields.io/badge/Neovim-0.9.0-blueviolet.svg?style=flat-square\u0026logo=Neovim\u0026color=90E59A\u0026logoColor=white\" alt=\"Neovim\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/doctorfree/nvim-lazyman/pulse\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/doctorfree/nvim-lazyman\" alt=\"Last commit\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/doctorfree/nvim-lazyman/pulse\"\u003e\u003cimg src=\"https://img.shields.io/github/commit-activity/t/doctorfree/nvim-lazyman\" alt=\"Github commit activity\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/doctorfree/nvim-lazyman/issues\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/doctorfree/nvim-lazyman.svg?style=flat-square\u0026label=Issues\u0026color=F05F40\" alt=\"Github issues\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/doctorfree/nvim-lazyman/actions/workflows/docker.yml\"\u003e\u003cimg src=\"https://github.com/doctorfree/nvim-lazyman/actions/workflows/docker.yml/badge.svg\" alt=\"CI Status\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/doctorfree/nvim-lazyman/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/doctorfree/nvim-lazyman?style=flat-square\u0026logo=MIT\u0026label=License\" alt=\"License\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n**NEWS!** `Lazyman` is now available as a [Kasm Workspace](https://kasmweb.com)\nby adding `https://doctorfree.github.io/kasm-registry/` as a\n[Kasm 3rd party registry](https://www.kasmweb.com/docs/latest/guide/workspace_registry.html)\nand installing the `Neovim` or `Deluxe` workspace in your Kasm instance.\n\nThe Lazyman Neovim configuration management menu:\n\n\u003cp float=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/wiki/doctorfree/nvim-lazyman/screenshots/lazymenu.png\" style=\"width:877px;height:525px;\"\u003e\n\u003c/p\u003e\n\nThe nvims Neovim configuration fuzzy selector:\n\n\u003cp float=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/wiki/doctorfree/nvim-lazyman/screenshots/nvims.png\" style=\"width:250px;height:350px;\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/wiki/doctorfree/nvim-lazyman/screenshots/nvims2.png\" style=\"width:250px;height:240px;\"\u003e\n\u003c/p\u003e\n\n\u003c/div\u003e\n\nThe Lazyman project can be used to install, initialize, and manage multiple\nNeovim configurations. Over 100 popular Neovim configurations are supported.\n\nSee [what's new](#whats-new)\n\nFollow the [Installation instructions](#installation) to bootstrap Lazyman.\nOnce Lazyman is installed, execute the `lazyman` command to manage\nNeovim configurations. The `lazyman` command is located in `~/.local/bin/lazyman`.\n\nThe two primary features of the Lazyman project are the `lazyman` command\nand the `nvims` shell function. The `lazyman` command provides a menu\ninterface and command line options to install, initialize, and manage\nmultiple Neovim configurations. The `nvims` shell function dynamically\ngenerates a fuzzy searchable menu of Neovim configurations from which\nto select. The selected configurations can be opened in Neovim, removed,\nor a configuration information document can be viewed.\n\nMore info on the `nvims` and `neovides` shell functions can be found below\nin the [nvims fuzzy selector section](#the-nvims-fuzzy-selector), in the\n`nvims` man page with `man nvims`, with the command `nvims -U`, or in Neovim\nusing the `nvim-Lazyman` configuration with `:h Nvims`.\n\nThe `lazyman` command separates Neovim configurations into 5 categories:\n`Base`, `Language`, `Personal`, `Starter`, and `Custom`. The `Base` category\nconsists of well tested Neovim configurations and distributions, all of which\nprovide significant value. The `Language` category includes Neovim configurations\ntailored for a specific programming or document format language. The `Personal`\ncategory includes personal Neovim configurations that provide significant value\nor demonstrate some cool features. Configurations in the `Personal` category are\nnot necessarily intended for public use, these repositories are maintained for\nthe personal use of the authors but are included here for their value.\nThe `Starter` category includes Neovim configurations tailored to serve as\na starting point for developing your own Neovim configuration. These include\nthe popular Neovim `Kickstart` configuration, a `Modern` Neovim config, the\n`PDE` personal development environment config, and the Neovim configurations\nprovided by the [nvim-starter project](https://github.com/VonHeikemen/nvim-starter).\nThe `Custom` category includes any additional Neovim configurations installed\nand initialized with `lazyman` by the end-user using the `-C url` and\n`-N nvimdir` options.\n\nIn addition, Lazyman installs and initializes the Lazyman Neovim configuration,\na richly configured Neovim environment using Lua, Lazy, and Mason to support\nhighlighting, completion, diagnostics, and more for many programming languages.\n\nThe installation and initialization of Neovim configurations are placed in\nseparate directories and managed using the `NVIM_APPNAME` environment variable.\n\nNote that a full installation and initialization of all supported\nNeovim configurations, plugins, language servers, formatters, linters,\nand tools will consume over 20GB of disk space.\n\nThe `lazyman` command is installed as `~/.local/bin/lazyman` and can be used\nto install, initialize, remove, and manage multiple Neovim configurations.\n\n# Table of Contents\n\n- [Requirements](#requirements)\n  - [Github API rate limiting](#github-api-rate-limiting)\n- [Installation](#installation)\n- [Supported configurations](#supported-configurations)\n  - [Base configurations](#base-configurations)\n  - [Language configurations](#language-configurations)\n  - [Personal configurations](#personal-configurations)\n  - [Starter configurations](#starter-configurations)\n  - [Custom configurations](#custom-configurations)\n- [Features](#features)\n  - [Lazyman Command Features](#lazyman-command-features)\n  - [Lazyman Neovim Configuration Features](#lazyman-neovim-configuration-features)\n  - [What's New](#whats-new)\n- [Usage](#usage)\n  - [Supported plugin managers](#supported-plugin-managers)\n  - [Updates](#updates)\n  - [Lazyman manual](#lazyman-manual)\n  - [Lazyman configuration](#lazyman-configuration)\n  - [Lazyman Neovim Terminal](#lazyman-neovim-terminal)\n- [Motivation](#motivation)\n  - [Inspiration](#inspiration)\n- [Notes](#notes)\n  - [Windows Subsystem for Linux](#windows-subsystem-for-linux)\n- [Removal](#removal)\n- [Known limitations and troubleshooting](#known-limitations-and-troubleshooting)\n- [Appendix](#appendix)\n  - [get_conf.lua](#get-configuration-script)\n  - [lazyman.sh](#lazyman-source-code)\n  - [install_neovim.sh](#install-neovim-and-tools)\n\n## Requirements\n\nThe `lazyman` Neovim configuration manager requires Neovim 0.9. The `lazyman`\ninstallation and initialization process checks for Neovim 0.9 and, if not\nfound, installs it and required dependencies and tools.\n\nLazyman requires Linux or macOS, git, and the Bash shell version 4 or later.\n\n- Unix/Linux/macOS\n- Neovim 0.9 (automatically installed if not found)\n- Bash version 4 or later (automatically installed if not found)\n- Git version 2 or later\n\n**Note:** `CentOS 7` users should upgrade `git` and [macOS users](#macos-users) upgrade `bash`.\n\nTo enable installation of language servers and treesitter syntax highlighting\n`gcc`, `node`, and `npm` are required. For example, to install these\nrequirements on Ubuntu Linux:\n\n```bash\nsudo apt install build-essential\nsudo apt install nodejs\nsudo apt install npm\n```\n\n### Github API rate limiting\n\nIf you are in a corporate network or large shared network you may encounter\nrate limiting issues when attempting to access the Github API. To increase\nyour rate limit, create and export a [Github personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens):\n\n```bash\nexport GITHUB_TOKEN=\u003cyour-github-token\u003e\n```\n\n### macOS users\n\nEven the latest versions of macOS ship with Bash 3.2 which dates from 2007.\nThe Lazyman initialization process will update your system with a modern\nBash using Homebrew:\n\n```bash\nbrew install bash\n```\n\nThe initialization process also makes sure it is found first in your PATH.\nFor example, `export PATH=\"/usr/local/bin:${PATH}\"` or `export PATH=\"/opt/homebrew/bin:${PATH}\"`.\n\n## Installation\n\nThe Lazyman installation process consists of two steps.\n\nStep 1, clone the Lazyman repository:\n\n```bash\ngit clone https://github.com/doctorfree/nvim-lazyman $HOME/.config/nvim-Lazyman\n```\n\nStep 2, initialize the Lazyman Neovim configuration:\n\n```bash\n$HOME/.config/nvim-Lazyman/lazyman.sh\n```\n\nThese 2 steps perform the following:\n\n1. Download the Lazyman Neovim configuration\n1. Initialize the Lazyman Neovim configuration which:\n   1. Installs language servers and tools for coding diagnostics\n   1. Installs the latest version of Neovim if not already installed\n   1. Installs and initializes configured Neovim plugins\n\nAfter the download and initialization are complete, execute the `lazyman`\ncommand found in `~/.local/bin/lazyman`.\n\nBy default, Lazyman uses the native package manager to install Neovim\ndependencies and tools. Supported native package managers include:\n\n- `apt` or `apt-get` on Debian based platforms (e.g. Ubuntu)\n- `dnf` or `yum` on RPM based platforms (Fedora, CentOS, Red Hat)\n- `pacman` on Arch Linux and Arch-Like platforms\n- `apk` on Alpine Linux\n- `xbps-install` on Void Linux\n- `zypper` on SUSE Linux\n\nFurther details on Lazyman installation including command line options\nto direct `lazyman` to install Neovim, dependencies and tools using\n[Homebrew](https://brew.sh) or to skip the Neovim installation altogether\ncan be found on the\n[Install tab of the Lazyman website](https://lazyman.dev/install)\n\n## Supported configurations\n\nView [details of each supported configuration](https://lazyman.dev/configurations)\nat the [Lazyman website](https://lazyman.dev).\n\nOver 100 popular Neovim configurations are supported in the following configuration categories:\n\n\u003c!-- prettier-ignore --\u003e\n| **Base** |        | **Configs** |\n| :------- | :----: | ----------: |\n| [Abstract](https://lazyman.dev/info/Abstract.html) | [AstroNvimPlus](https://lazyman.dev/info/AstroNvimPlus.html) | [Basic IDE](https://lazyman.dev/info/BasicIde.html) |\n| [Ecovim](https://lazyman.dev/info/Ecovim.html) | [LazyVim](https://lazyman.dev/info/LazyVim.html) | [LunarVim](https://lazyman.dev/info/LunarVim.html) |\n| [MagicVim](https://lazyman.dev/info/MagicVim.html) | [NvChad](https://lazyman.dev/info/NvChad.html) | [SpaceVim](https://lazyman.dev/info/SpaceVim.html) |\n\n\u003c!-- prettier-ignore --\u003e\n| **Language** |        |        |        |        |        | **Configs** |\n| :----------- | :----: | :----: | :----: | :----: | :----: | ----------: |\n| [AlanVim](https://lazyman.dev/info/AlanVim.html) | [Allaman](https://lazyman.dev/info/Allaman.html) | [CatNvim](https://lazyman.dev/info/CatNvim.html) | [Cpp](https://lazyman.dev/info/Cpp.html) | [Go](https://lazyman.dev/info/Go.html) | [Go2one](https://lazyman.dev/info/Go2one.html) | [Insis](https://lazyman.dev/info/Insis.html) |\n| [Knvim](https://lazyman.dev/info/Knvim.html) | [LaTeX](https://lazyman.dev/info/LaTeX.html) | [LazyIde](https://lazyman.dev/info/LazyIde.html) | [LunarIde](https://lazyman.dev/info/LunarIde.html) | [LvimIde](https://lazyman.dev/info/LvimIde.html) | [Magidc](https://lazyman.dev/info/Magidc.html) | [Nv](https://lazyman.dev/info/Nv.html) |\n| [NV-IDE](https://lazyman.dev/info/NV-IDE.html) | [Orange](https://lazyman.dev/info/Orange.html) | [Python](https://lazyman.dev/info/Python.html) | [Rust](https://lazyman.dev/info/Rust.html) | [SaleVim](https://lazyman.dev/info/SaleVim.html) | [Shuvro](https://lazyman.dev/info/Shuvro.html) | [Webdev](https://lazyman.dev/info/Webdev.html) |\n\n\u003c!-- prettier-ignore --\u003e\n| **Personal** |        |        |        | **Configs** |\n| :----------- | :----: | :----: | :----: | ----------: |\n| [Adib](https://lazyman.dev/info/Adib.html) | [Ahsan](https://lazyman.dev/info/Ahsan.html) | [Artur](https://lazyman.dev/info/Artur.html) | [Beethoven](https://lazyman.dev/info/Beethoven.html) | [Brain](https://lazyman.dev/info/Brain.html) |\n| [Charles](https://lazyman.dev/info/Charles.html) | [Chokerman](https://lazyman.dev/info/Chokerman.html) | [Craftzdog](https://lazyman.dev/info/Craftzdog.html) | [Dillon](https://lazyman.dev/info/Dillon.html) | [Elianiva](https://lazyman.dev/info/Elianiva.html) |\n| [Elijah](https://lazyman.dev/info/Elijah.html) | [Enrique](https://lazyman.dev/info/Enrique.html) | [Heiker](https://lazyman.dev/info/Heiker.html) | [J4de](https://lazyman.dev/info/J4de.html) | [Jdhao](https://lazyman.dev/info/Jdhao.html) |\n| [Josean](https://lazyman.dev/info/Josean.html) | [JustinNvim](https://lazyman.dev/info/JustinNvim.html) | [Kodo](https://lazyman.dev/info/Kodo.html) | [Kristijan](https://lazyman.dev/info/Kristijan.html) | [LamarVim](https://lazyman.dev/info/LamarVim.html) |\n| [Maddison](https://lazyman.dev/info/Maddison.html) | [Metis](https://lazyman.dev/info/Metis.html) | [Mini](https://lazyman.dev/info/Mini.html) | [OnMyWay](https://lazyman.dev/info/OnMyWay.html) | [ONNO](https://lazyman.dev/info/ONNO.html) |\n| [Optixal](https://lazyman.dev/info/Optixal.html) | [Orhun](https://lazyman.dev/info/Orhun.html) | [Primeagen](https://lazyman.dev/info/Primeagen.html) | [Rafi](https://lazyman.dev/info/Rafi.html) | [RNvim](https://lazyman.dev/info/RNvim.html) |\n| [Roiz](https://lazyman.dev/info/Roiz.html) | [SeniorMars](https://lazyman.dev/info/SeniorMars.html) | [Simple](https://lazyman.dev/info/Simple.html) | [Slydragonn](https://lazyman.dev/info/Slydragonn.html) | [Spider](https://lazyman.dev/info/Spider.html) |\n| [Traap](https://lazyman.dev/info/Traap.html) | [Vimacs](https://lazyman.dev/info/Vimacs.html) | [Wuelner](https://lazyman.dev/info/Wuelner.html) | [xero](https://lazyman.dev/info/xero.html) | [Xiao](https://lazyman.dev/info/Xiao.html) |\n\n\u003c!-- prettier-ignore --\u003e\n| **Starter** |        |        |        | **Configs** |\n| :---------- | :----: | :----: | :----: | ----------: |\n| [AstroNvimStart](https://lazyman.dev/info/AstroNvimStart.html) | [Barebones](https://lazyman.dev/info/Barebones.html) | [Basic](https://lazyman.dev/info/Basic.html) | [CodeArt](https://lazyman.dev/info/CodeArt.html) | [CosmicNvim](https://lazyman.dev/info/Cosmic.html) |\n| [Ember](https://lazyman.dev/info/Ember.html) | [Fennel](https://lazyman.dev/info/Fennel.html) | [HardHacker](https://lazyman.dev/info/HardHacker.html) | [JustinOhMy](https://lazyman.dev/info/JustinOhMy.html) | [Kickstart](https://lazyman.dev/info/Kickstart.html) |\n| [KickstartPython](https://lazyman.dev/info/KickstartPython.html) | [Kabin](https://lazyman.dev/info/Kabin.html) | [Micah](https://lazyman.dev/info/Micah.html) | [Modern](https://lazyman.dev/info/Modern.html) | [Normal](https://lazyman.dev/info/Normal.html) |\n| [nvim2k](https://lazyman.dev/info/2k.html) | [NvPak](https://lazyman.dev/info/NvPak.html) | [PDE](https://lazyman.dev/info/pde.html) | [Rohit](https://lazyman.dev/info/Rohit.html) | [Scratch](https://lazyman.dev/info/Scratch.html) |\n| | | [SingleFile](https://lazyman.dev/info/SingleFile.html) | | |\n\n\u003c!-- prettier-ignore --\u003e\n| **VonHeikemen** |        | **Starter** |        | **Configs** |\n| :-------------- | :----: | :---------: | :----: | ----------: |\n| [BasicLsp](https://lazyman.dev/info/BasicLsp.html) | [BasicMason](https://lazyman.dev/info/BasicMason.html) | [Extralight](https://lazyman.dev/info/Extralight.html) | [LspCmp](https://lazyman.dev/info/LspCmp.html) | [Minimal](https://lazyman.dev/info/Minimal.html) |\n| [Modular](https://lazyman.dev/info/Modular.html) | [Opinionated](https://lazyman.dev/info/Opinion.html) | [StartBase](https://lazyman.dev/info/StartBase.html) | [StartLsp](https://lazyman.dev/info/StartLsp.html) | [StartMason](https://lazyman.dev/info/StartMason.html) |\n\n### Base configurations\n\nThe Lazyman \"Base\" Neovim configurations are well tested, full featured Neovim\nconfigurations that provide an excellent base starting point for exploring\nthe features of `lazyman` and the wealth of Neovim configuration possibilities.\n\nAll \"Base\" Neovim configurations can be installed and initialized with `lazyman -B`.\n\nView descriptions of the\n[Lazyman \"Base\" Neovim configurations](https://lazyman.dev/configurations#base-configurations)\n\n### Language configurations\n\nIn addition to the base Neovim configurations listed above, `lazyman` can\ninstall and initialize several \"Language\" Neovim configurations. These can\nbe used as programming or document format specific Neovim configurations.\nThe `Language` category configurations either employ a specific language\nor target specific language(s).\n\n[Note:] The `Language` category does not include all supported Lazyman Neovim\nconfigurations with programming language support. In fact, most Neovim\nconfigurations support several programming languages. The `Language` category\nsimply serves as a convenience to get started exploring language support.\n\nAll of the \"Language\" configurations can be installed and initialized with\nthe command `lazyman -L all`. Individual \"Language\" configurations can be\ninstalled with the `-L lang` option.\n\nView descriptions of the\n[Lazyman \"Language\" Neovim configurations](https://lazyman.dev/configurations#language-configurations)\n\n### Personal configurations\n\nIn addition to the base and language Neovim configurations listed above,\n`lazyman` can install and initialize several \"Personal\" Neovim configurations.\nThese are used as personal Neovim configurations, so there are no guarantees\nmade about stability or compatibility. Each supported personal configuration\nuses some interesting approach and provides significant value making them worthy\nof study, exploration, and possible use in tailoring your own configuration.\n\nAll of the 'Personal' configurations can be installed and initialized with\nthe command `lazyman -W`. Individual 'Personal' configurations can be\ninstalled with the `-w conf` option.\n\nView descriptions of the\n[Lazyman \"Personal\" Neovim configurations](https://lazyman.dev/configurations#personal-configurations)\n\n### Starter configurations\n\nThe \"Starter\" Neovim configurations include `Basic`, `Kickstart`, `NvPak`,\n`Modern`, `PDE`, and those provided by [VonHeikemen](https://github.com/VonHeikemen),\nthe author of [LSP Zero](https://github.com/VonHeikemen/lsp-zero.nvim).\n\nAll of the \"Starter\" configurations can be installed and initialized with\nthe command `lazyman -X`. Individual \"Starter\" configurations can be\ninstalled with the `-x conf` option.\n\nView descriptions of the\n[Lazyman \"Starter\" Neovim configurations](https://lazyman.dev/configurations#starter-configurations)\n\n### Custom configurations\n\nLazyman includes support for `Custom` Neovim configurations. To install and initialize\na Neovim configuration not supported out-of-the-box by Lazyman, use the `-C url` and\n`-N nvimdir` options to `lazyman`.\n\nView details and examples of installing and initializing\n[Lazyman \"Custom\" Neovim configurations](https://lazyman.dev/configurations#custom-configurations).\n\n## Features\n\n### Lazyman Command Features\n\nView the features of the [lazyman command](https://lazyman.dev/features).\n\nSee the [Usage](https://lazyman.dev/usage) section for details on `lazyman` command usage.\n\n### Lazyman Neovim Configuration Features\n\nView the features of the [Lazyman Neovim configuration](https://lazyman.dev/features#lazyman-neovim-configuration-features).\n\n### What's New\n\n| **Shiny** | **New** | **Lazyman** | **Websites** |\n| :-------- | :-----: | :---------: | -----------: |\n| [Lazyman\u003cbr /\u003elazyman.dev](https://lazyman.dev) | [AstroNvim\u003cbr /\u003eastronvim.lazyman.dev](https://astronvim.lazyman.dev) | [LazyVim\u003cbr /\u003elazyvim.lazyman.dev](https://lazyvim.lazyman.dev) | [LunarVim\u003cbr /\u003elunarvim.lazyman.dev](https://lunarvim.lazyman.dev) |\n| [NvChad\u003cbr /\u003envchad.lazyman.dev](https://nvchad.lazyman.dev) | [CandyVim\u003cbr /\u003ecandyvim.lazyman.dev](https://candyvim.lazyman.dev) | [LazyIde\u003cbr /\u003eide.lazyman.dev](https://ide.lazyman.dev) | [Webdev\u003cbr /\u003ewebdev.lazyman.dev](https://webdev.lazyman.dev) |\n\nA convenience script has been introduced to invoke Neovim with the Lazyman\nNeovim configuration regardless of `NVIM_APPNAME` environment setting. The\n`lman` command can be used to edit a file using the Lazyman Neovim config:\n\n```bash\nlman /path/to/file.ext\n```\n\nThanks to Github user `wxguy` for this convenience script.\n\nView the latest Lazyman news on the\n[News tab of the Lazyman website](https://lazyman.dev/news).\n\n## Usage\n\nView Lazyman command line usage on the\n[Usage tab of the Lazyman website](https://lazyman.dev/usage).\n\n### Supported plugin managers\n\nLazyman currently supports the following Neovim plugin managers:\n\n- [Lazy](https://github.com/folke/lazy.nvim) (lazy.nvim)\n- [Packer](https://github.com/wbthomason/packer.nvim) (packer.nvim)\n- [Plug](https://github.com/junegunn/vim-plug) (vim-plug)\n\nThe SpaceVim bundled plugin manager, **dein**, is supported only for the\nSpaceVim install and initialization but Neovim configurations preconfigured\nto use the **dein** plugin manager may install and initialize successfully.\n\nNeovim configurations using other plugin managers will likely fail to cleanly\ninstall and initialize using `lazyman`. Support for additional plugin managers\nis not currently planned but if you have a need for this feature open an issue.\n\nTo install and initialize a Neovim configuration that uses the **Packer** plugin\nmanager invoke `lazyman` with the `-P` flag. See the [Packer](#packer) section below.\n\nTo install and initialize a Neovim configuration that uses the **Plug** plugin\nmanager invoke `lazyman` with the `-p` flag. See the [Plug](#plug) section below.\n\n### Updates\n\nTo update a previously installed Lazyman Neovim configuration execute\n`lazyman -U -N \u003cnvimdir\u003e` to update the Neovim configuration in\n`~/.config/\u003cnvimdir\u003e`, `lazyman -U -A` to update all configurations,\nor `lazyman -U` to update the `nvim-Lazyman` configuration. Updates\nretrieve any newly modified files from the respective Github repository\nwhile preserving local modifications. Note, if a file has been modified\nboth locally and in the repository then it will not be updated and retain\nonly local modifications.\n\n### Lazyman manual\n\nThe `lazyman` bootstrap process installs a `lazyman` manual page in\n`~/.local/share/man/man1/lazyman.1`. This man page includes a synopsis\nof the `lazyman` command line options, a brief description of its use,\na description of each command line option, and several example invocations.\n\nThe `lazyman` manual page can be viewed with `man lazyman`.\n\nLazyman Neovim help can be viewed inside Neovim with `:h Lazyman`.\n\n### Lazyman configuration\n\nThe `nvim-Lazyman` Neovim configuration includes a top-level configuration file,\n`~/.config/nvim-Lazyman/lua/configuration.lua`. This file can be use to enable,\ndisable, and configure `nvim-Lazyman` components. For example, here is where you\nwould configure whether `neo-tree` or `nvim-tree` is enabled as a file explorer.\nOr, disable the tabline, disable the statusline, set the colorscheme, theme, and\ntheme style. The `configuration.lua` file is intended to serve as a quick and\neasy way to re-configure the `nvim-Lazyman` Neovim configuration but you can still\ndig down into the `options.lua`, `keymaps.lua`, `autocmds.lua` and more.\n\n#### Configuration sections\n\nThe `lua/configuration.lua` configuration file contains the following sections\nwith settings briefly described here:\n\n##### Namespace selection\n\nThe `Lazyman` Neovim configuration contains three separate and distinct\nconfigurations. The setting `conf.namespace` in `lua/configuration.lua`\ncontrols which configuration is active. The supported values for\n`conf.namespace` are `ecovim` `free` and `onno`. The `free` namespace is\nthe same configuration used in previous releases of `Lazyman`. The `onno`\nnamespace is based on the [ONNO](https://lazyman.dev/info/ONNO.html)\nconfiguration with modifications and enhancements to integrate this config\nwith `lazyman`. The `ecovim` namespace is based on the\n[Ecovim](https://lazyman.dev/info/Ecovim.html) configuration with modifications\nand enhancements to integrate with `lazyman`. The default Lazyman configuration\nnamespace is `ecovim`.\n\nTo switch Lazyman namespaces, run the command:\n\n```bash\nlazyman -O \u003cnamespace\u003e\n```\n\nWhere `\u003cnamespace\u003e` is one of `ecovim`, `free`, or `onno`.\n\nThis setting is configurable via the `lazyman` menu system, as are most\nof the `Lazyman` configuration settings (`lazyman -F`).\n\n##### Theme configuration\n\nThe `nvim-Lazyman` Neovim configuration includes pre-configured support for several\nthemes including support for statusline and tabline theme coordination. The active\ntheme and colorscheme is selected in `configuration.lua` by setting `conf.theme`.\nFor themes that support different styles, the theme style is selected by setting\n`conf.theme_style`. Theme transparency can be enabled with `conf.enable_transparent`.\nFor example, to use the `kanagawa` theme with `dragon` style and transparency\ndisabled, set:\n\n```\nconf.theme = \"kanagawa\"\nconf.theme_style = \"dragon\"\nconf.enable_transparent = false\n```\n\n###### Supported themes\n\n- [catppuccin](https://github.com/catppuccin/nvim.git)\n- [dracula](https://github.com/Mofiqul/dracula.nvim)\n- [everforest](https://github.com/neanias/everforest-nvim.git)\n- [kanagawa](https://github.com/rebelot/kanagawa.nvim.git)\n- [nightfox](https://github.com/EdenEast/nightfox.nvim.git)\n- [monokai-pro](https://github.com/loctvl842/monokai-pro.nvim)\n- [onedarkpro](https://github.com/olimorris/onedarkpro.nvim.git)\n- [tokyonight](https://github.com/folke/tokyonight.nvim.git)\n- [tundra](https://github.com/sam4llis/nvim-tundra.git)\n\nA configuration file for each theme is in `lua/themes/` and lualine theme\nconfiguration for each theme and its styles in `lua/themes/lualine`.\n\nUse `\u003cF8\u003e` to step through themes.\n\nAvailable styles are:\n\n- kanagawa\n  - wave\n  - dragon\n  - lotus\n- tokyonight\n  - night\n  - storm\n  - day\n  - moon\n- onedarkpro\n  - onedark\n  - onelight\n  - onedark_vivid\n  - onedark_dark\n- catppuccin\n  - latte\n  - frappe\n  - macchiato\n  - mocha\n  - custom\n- dracula\n  - blood\n  - magic\n  - soft\n  - default\n- nightfox\n  - carbonfox\n  - dawnfox\n  - dayfox\n  - duskfox\n  - nightfox\n  - nordfox\n  - terafox\n- monokai-pro\n  - classic\n  - octagon\n  - pro\n  - machine\n  - ristretto\n  - spectrum\n\n##### Plugin configuration\n\nSeveral Neovim plugins in the `nvim-Lazyman` configuration can be optionally\ninstalled or replaced by another plugin with similar functionality. The plugins\nthat are configurable in this way in `configuration.lua` are briefly described\nbelow along with their default settings:\n\n- Neovim session manager to use, either persistence or possession\n  - `conf.session_manager = \"possession\"`\n- Enable display of ascii art\n  - `conf.enable_asciiart = false`\n- Delete buffers and close files without closing your windows\n  - `conf.enable_bbye = true`\n- Enable display of custom cheatsheets\n  - `conf.enable_cheatsheet = true`\n- Enable coding plugins for diagnostics, debugging, and language sservers\n  - `conf.enable_coding = true`\n- Enable compile plugin to compile and run current file\n  - `conf.enable_compile = false`\n- If coding is enabled, enable Github Copilot\n  - `conf.enable_copilot = false`\n- If coding is enabled, enable Neoai, \u003chttps://github.com/Bryley/neoai.nvim\u003e\n  - `conf.enable_neoai = false`\n- Enable dressing plugin for improved default vim.ui interfaces\n  - `conf.enable_dressing = true`\n- Enable easy motions, can be one of \"hop\", \"leap\", or \"none\"\n  - `conf.enable_motion = \"leap\"`\n- Enable note making using Markdown preview and Obsidian plugins\n  - `conf.enable_notes = true`\n- Enable renamer plugin for VS Code-like renaming UI\n  - `conf.enable_renamer = true`\n- Enable ranger in a floating window\n  - `conf.enable_ranger_float = true`\n- Enable multiple cursors\n  - `conf.enable_multi_cursor = true`\n- Neo-tree or nvim-tree, false will enable nvim-tree\n  - `conf.enable_neotree = true`\n- Replace the UI for messages, cmdline and the popup menu\n  - `conf.enable_noice = true`\n- Enable ChatGPT (set `OPENAI_API_KEY` environment variable)\n  - `conf.enable_chatgpt = false`\n- Enable the wilder plugin\n  - `conf.enable_wilder = false`\n- The statusline (lualine) can be enabled or disabled\n  - `conf.enable_statusline = true`\n- The winbar with navic location can be one of barbecue, standard, or none\n  - `conf.enable_winbar = \"standard\"`\n- Enable LSP progress in winbar\n  - `conf.enable_lualine_lsp_progress = true`\n- Enable the rebelot/terminal.nvim terminal plugin\n  - `conf.enable_terminal = true`\n- Enable playing games inside Neovim!\n  - `conf.enable_games = true`\n- Enable the Alpha dashboard\n  - `conf.dashboard = \"alpha\"`\n- Enable the Neovim bookmarks plugin (\u003chttps://github.com/ldelossa/nvim-ide\u003e)\n  - `conf.enable_bookmarks = false`\n- Enable the Neovim IDE plugin (\u003chttps://github.com/ldelossa/nvim-ide\u003e)\n  - `conf.enable_ide = false`\n- Enable Navigator\n  - `conf.enable_navigator = true`\n- Enable Project manager\n  - `conf.enable_project = true`\n- Enable smooth scrolling with the `neoscroll` plugin\n  - `conf.enable_smooth_scrolling = true`\n- Enable window picker\n  - `conf.enable_picker = true`\n- Show diagnostics, can be one of \"none\", \"icons\", \"popup\". Default is \"popup\"\n  - `conf.show_diagnostics = \"icons\"`\n- Enable semantic highlighting\n  - `conf.enable_semantic_highlighting = true`\n- Convert semantic highlights to treesitter highlights\n  - `conf.convert_semantic_highlighting = true`\n\nAdditional plugin configuration and options are available in `configuration.lua`.\n\n\u003cdetails\u003e\u003csummary\u003eClick here to view the\n\n**Lazyman default `configuration.lua`**\n\n\u003c/summary\u003e\n\n```lua\nlocal conf = {}\n\n-- Namespace to use, available namespaces are \"ecovim\", free\", and \"onno\"\n-- Switching namespace changes to a completely different configuration\n-- This is an example of how to incorporate multiple Neovim configurations\n-- into a single configuration.\nconf.namespace = \"ecovim\"\n--\n-- THEME CONFIGURATION\n-- Available themes:\n--   nightfox, tokyonight, dracula, kanagawa, catppuccin,\n--   tundra, onedarkpro, everforest, monokai-pro\n-- A configuration file for each theme is in lua/themes/\n-- Use \u003cF8\u003e to step through themes\nconf.theme = \"tokyonight\"\n-- Available styles are:\n--   kanagawa:    wave, dragon, lotus\n--   tokyonight:  night, storm, day, moon\n--   onedarkpro:  onedark, onelight, onedark_vivid, onedark_dark\n--   catppuccin:  latte, frappe, macchiato, mocha, custom\n--   dracula:     blood, magic, soft, default\n--   nightfox:    carbonfox, dawnfox, dayfox, duskfox, nightfox, nordfox, terafox\n--   monokai-pro: classic, octagon, pro, machine, ristretto, spectrum\nconf.theme_style = \"moon\"\n-- enable transparency if the theme supports it\nconf.enable_transparent = true\n\n-- GLOBAL OPTIONS CONFIGURATION\n-- Some prefer space as the map leader, but why\nconf.mapleader = \",\"\nconf.maplocalleader = \",\"\n-- Toggle global status line\nconf.global_statusline = true\n-- set numbered lines\nconf.number = true\n-- enable mouse see :h mouse\nconf.mouse = \"nv\"\n-- set relative numbered lines\nconf.relative_number = true\n-- always show tabs; 0 never, 1 only if at least two tab pages, 2 always\nconf.showtabline = 2\n-- enable or disable listchars\nconf.list = true\n-- which list chars to show\nconf.listchars = {\n  eol = \"⤶\",\n  tab = \"\u003e.\",\n  trail = \"~\",\n  extends = \"◀\",\n  precedes = \"▶\",\n}\n-- use rg instead of grep\nconf.grepprg = \"rg --hidden --vimgrep --smart-case --\"\n\n-- ENABLE/DISABLE/SELECT PLUGINS\n--\n-- AI coding assistants - ChatGPT, Code Explain, Codeium, Copilot, NeoAI\n-- Enable Github Copilot if you have an account, it is superior\n--\n-- Enable ChatGPT (set OPENAI_API_KEY environment variable)\nconf.enable_chatgpt = false\n-- Enable Code Explain (requires 3.5GB model, uses GPT4ALL)\nconf.enable_codeexplain = false\n-- Enable Codeium\nconf.enable_codeium = false\n-- Enable Github Copilot\nconf.enable_copilot = false\n-- Enable Neoai, https://github.com/Bryley/neoai.nvim\nconf.enable_neoai = false\n-- Enable tabnine, https://github.com/Bryley/neoai.nvim\nconf.enable_tabnine = false\n--\n-- Enable display of ascii art\nconf.enable_asciiart = false\n-- Delete buffers and close files without closing your windows\nconf.enable_bbye = true\n-- Enable display of custom cheatsheets\nconf.enable_cheatsheet = true\n-- Enable coding plugins for diagnostics, debugging, and language servers\nconf.enable_coding = true\n-- Enable compile plugin to compile and run current file\nconf.enable_compile = false\n-- Enable dressing plugin for improved default vim.ui interfaces\nconf.enable_dressing = true\n-- Enable easy motions, can be one of \"hop\", \"flash\", \"leap\", or \"none\"\nconf.enable_motion = \"leap\"\n-- Enable note making using Markdown preview and Obsidian plugins\nconf.enable_notes = false\n-- If notes enabled, markdown preview to use (preview, peek, none)\nconf.markdown_preview = \"peek\"\n-- If notes enabled, Neorg notes folders, multiple folders supported\nconf.neorg_notes = {\n  \"~/Documents/Notes/Neorg\", -- NEORG_NOTES\n  -- \"XXXXX\", -- NEORG_NOTES\n  -- \"YYYYY\", -- NEORG_NOTES\n  -- \"ZZZZZ\", -- NEORG_NOTES\n}\n-- Enable note making using Obsidian\nconf.enable_obsidian = false\n-- If Obsidian enabled, Obsidian vault folder (relative to HOME)\nconf.obsidian_vault = \"Documents/Notes/Obsidian\"\n-- Enable renamer plugin for VS Code-like renaming UI\nconf.enable_renamer = true\n-- Enable ranger in a floating window\nconf.enable_ranger_float = true\n-- Highlight sections of code which might have security or quality issues\nconf.enable_securitree = false\n-- neovim session manager to use: persistence, possession, or none\nconf.session_manager = \"persistence\"\n-- File explorer tree plugin: neo-tree, nvim-tree, or none\nconf.file_tree = \"neo-tree\"\n-- Replace the UI for messages, cmdline and the popupmenu\nconf.enable_noice = true\n-- Enable smart column display\nconf.enable_smartcolumn = true\n-- Enable 'StartupTime' command\nconf.enable_startuptime = true\n-- Add/change/delete surrounding delimiter pairs with ease\nconf.enable_surround = true\n-- Enable the wilder plugin\nconf.enable_wilder = false\n--\n-- Lualine, Tabline, and Winbar configuration\n--\n-- The Lualine style can be \"free\" or \"onno\"\nconf.lualine_style = \"free\"\n-- Separator for 'onno' style lualine components, can be \"bubble\" or \"arrow\"\nconf.lualine_separator = \"bubble\"\n-- Enable fancy lualine components\nconf.enable_fancy = false\n-- The statusline (lualine), tabline, and winbar can each be enabled or disabled\n-- Enable statusline (lualine)\nconf.enable_statusline = true\n-- Enable status in tabline\nconf.enable_status_in_tab = false\n-- Enable winbar with navic location\n-- Can be one of \"barbecue\", \"standard\", or \"none\"\n-- Barbecue provides a clickable navic location, standard has more info\nconf.enable_winbar = \"barbecue\"\n-- Enable LSP progress in winbar\nconf.enable_lualine_lsp_progress = true\n-- Enable rebelot/terminal.nvim\n--\nconf.enable_terminal = true\n-- Enable toggleterm plugin\nconf.enable_toggleterm = true\n-- Enable window animations (mini.animate)\nconf.enable_animate = true\n-- Enable ducks, cats, dinosaurs, and other animals wandering around\nconf.enable_duck = true\n-- Enable window animations (flirt)\nconf.enable_flirt = false\n-- Enable playing games inside Neovim!\nconf.enable_games = true\n-- Enable the WakaTime metrics dashboard (requires API key)\nconf.enable_wakatime = false\n-- Enable zen mode distraction-free coding\nconf.enable_zenmode = true\n-- if zenmode enabled then enable terminal support as well\nconf.enable_kitty = false\nconf.enable_alacritty = false\nconf.enable_wezterm = false\n-- Enable a dashboard, can be one of \"alpha\", \"dash\", \"mini\", or \"none\"\nconf.dashboard = \"alpha\"\n-- Number of recent files, dashboard header and quick links settings\n-- only apply to the Alpha dashboard\n-- Number of recent files shown in dashboard\n-- 0 disables showing recent files\nconf.dashboard_recent_files = 3\n-- Enable the header of the dashboard\nconf.enable_dashboard_header = true\n-- Enable quick links of the dashboard\nconf.enable_dashboard_quick_links = true\n-- Enable either the Drop screensaver or the Zone screensaver\n-- Drop can be one of xmas, stars, leaves, snow, spring, summer, or drop\n-- Zone can be one of treadmill, matrix, epilepsy, vanish, or zone\n-- 'drop' indicates a random drop, 'zone' a random zone\n-- 'random' to randomly select between the two, 'none' to disable\nconf.enable_screensaver = \"none\"\n-- Screensaver timeout in minutes\nconf.screensaver_timeout = 15\n-- Enable the Neovim bookmarks plugin (https://github.com/ldelossa/nvim-ide)\nconf.enable_bookmarks = false\n-- Enable the Neovim IDE plugin (https://github.com/ldelossa/nvim-ide)\nconf.enable_ide = false\n-- Enable Navigator\nconf.enable_navigator = true\n-- Enable Project manager\nconf.enable_project = true\n-- Enable window picker\nconf.enable_picker = true\n-- Enable smooth scrolling with neoscroll plugin\nconf.enable_smooth_scrolling = true\n-- Enable the Neotest plugin\nconf.enable_neotest = false\n\n-- PLUGINS CONFIGURATION\n-- media backend, one of \"ueberzug\"|\"viu\"|\"chafa\"|\"jp2a\"|\"catimg\"|\"none\"\nconf.media_backend = \"jp2a\"\n-- Style of indentation, can be one of:\n-- 'background' colored' 'context' 'listchars' 'mini' 'simple' 'none'\nconf.indentline_style = \"mini\"\n-- treesitter parsers to be installed\nconf.treesitter_ensure_installed = {\n  \"bash\",\n  \"c\",\n  \"lua\",\n  \"markdown\",\n  \"markdown_inline\",\n  \"query\",\n  \"regex\",\n  \"vim\",\n  \"vimdoc\",\n}\n-- Enable clangd or ccls for C/C++ diagnostics\n-- Note: if enabled then the tool must be installed and in the execution path\nconf.enable_ccls = true\nconf.enable_clangd = false\n-- Typescript language server. Can be \"tsserver\" \"tools\" or \"none\"\nconf.typescript_server = \"tools\"\n-- LSPs that should be installed by Mason-lspconfig\n-- Leave the 'LSP_SERVERS' trailing comment, it is used by lazyman\nconf.lsp_servers = {\n  \"bashls\",        -- LSP_SERVERS\n  \"cssls\",         -- LSP_SERVERS\n  \"cssmodules_ls\", -- LSP_SERVERS\n  \"denols\",        -- LSP_SERVERS\n  \"dockerls\",      -- LSP_SERVERS\n  \"emmet_ls\",      -- LSP_SERVERS\n  -- \"eslint\",     -- LSP_SERVERS\n  -- \"gopls\",      -- LSP_SERVERS\n  \"graphql\",       -- LSP_SERVERS\n  \"html\",          -- LSP_SERVERS\n  \"jdtls\",         -- LSP_SERVERS\n  \"jsonls\",        -- LSP_SERVERS\n  \"julials\",       -- LSP_SERVERS\n  \"ltex\",          -- LSP_SERVERS\n  \"lua_ls\",        -- LSP_SERVERS\n  \"marksman\",      -- LSP_SERVERS\n  \"prismals\",      -- LSP_SERVERS\n  \"pylsp\",         -- LSP_SERVERS\n  \"pyright\",       -- LSP_SERVERS\n  \"sqlls\",         -- LSP_SERVERS\n  \"tailwindcss\",   -- LSP_SERVERS\n  \"texlab\",        -- LSP_SERVERS\n  \"tsserver\",      -- LSP_SERVERS\n  \"vimls\",         -- LSP_SERVERS\n  \"vuels\",         -- LSP_SERVERS\n  \"yamlls\",        -- LSP_SERVERS\n}\n-- Formatters and linters installed by Mason\nconf.formatters_linters = {\n  \"actionlint\",      -- FORMATTERS_LINTERS\n  \"gofumpt\",         -- FORMATTERS_LINTERS\n  \"goimports\",       -- FORMATTERS_LINTERS\n  \"golines\",         -- FORMATTERS_LINTERS\n  \"golangci-lint\",   -- FORMATTERS_LINTERS\n  \"google-java-format\", -- FORMATTERS_LINTERS\n  \"latexindent\",     -- FORMATTERS_LINTERS\n  \"markdownlint\",    -- FORMATTERS_LINTERS\n  \"prettier\",        -- FORMATTERS_LINTERS\n  \"sql-formatter\",   -- FORMATTERS_LINTERS\n  -- \"shellcheck\",   -- FORMATTERS_LINTERS\n  \"shfmt\",           -- FORMATTERS_LINTERS\n  \"stylua\",          -- FORMATTERS_LINTERS\n  \"tflint\",          -- FORMATTERS_LINTERS\n  \"yamllint\",        -- FORMATTERS_LINTERS\n}\n-- Formatters and linters installed externally\nconf.external_formatters = {\n  \"beautysh\",        -- FORMATTERS_LINTERS\n  \"black\",           -- FORMATTERS_LINTERS\n  \"flake8\",          -- FORMATTERS_LINTERS\n  \"ruff\",            -- FORMATTERS_LINTERS\n}\n-- enable greping in hidden files\nconf.telescope_grep_hidden = true\n-- Show diagnostics, can be one of \"none\", \"icons\", \"popup\". Default is \"popup\"\n--   \"none\":  diagnostics are disabled but still underlined\n--   \"icons\": only an icon will show, use ',de' to see the diagnostic\n--   \"popup\": an icon will show and a popup with the diagnostic will appear\nconf.show_diagnostics = \"popup\"\n-- Enable semantic highlighting\nconf.enable_semantic_highlighting = true\n-- Convert semantic highlights to treesitter highlights\nconf.convert_semantic_highlighting = true\n\nreturn conf\n```\n\n\u003c/details\u003e\n\n### Lazyman Neovim Terminal\n\nThe `Lazyman` Neovim configuration includes Neovim Terminal management via\n[terminal.nvim](https://github.com/rebelot/terminal.nvim). This Neovim terminal\nis preconfigured for execution of the `lazyman` command. Shortcut key\nbindings to execute `lazyman` in a Neovim terminal have been provided:\n`\u003cleader\u003elm` to bring up the main Lazyman menu, and `\u003cleader\u003elc` to bring up\nthe Lazyman configuration menu. While in Neovim with the default\n`nvim-Lazyman` configuration, pressing `,lm` will execute the `lazyman`\ncommand in a Neovim floating terminal window and pressing `,lc` will\nexecute `lazyman -F` in a terminal window. Alternately, executing the\nNeovim command `:Lazyman` will also bring up the `lazyman` command\nin a Neovim terminal.\n\nThe Lazyman Neovim configuration includes an autocmd to automatically\nenter insert mode when opening the Neovim Terminal. This allows\nimmediate input to the `lazyman` prompt. While in the Neovim Terminal\nthe normal Neovim mode, motion, and command key bindings are in effect.\nFor example, to leave insert mode press `\u003cESC\u003e`, to re-enter insert\nmode press `i` or `a`.\n\nIf [Asciiville](https://github.com/doctorfree/Asciiville) is installed,\npressing `,A` or executing the `:Asciiville` Neovim command will execute\nthe `asciiville` command in a Neovim floating terminal window.\n\nIf the `htop` command is available, `:Htop` will execute the `htop` system\nmonitor in a floating Neovim terminal window.\n\nThis preconfigured Neovim terminal capability is only available in the\n`Lazyman` Neovim configuration and not in the other configs.\n\n## Motivation\n\nI'm a lazy man. I wanted to try out a bunch of nifty looking Neovim\nconfigurations but I didn't want to spend a lot of time setting each\nof them up and managing them. Instead, I spent a lot of time writing\nan install/initialize/manage tool I could use: `lazyman`.\n\nAlthough the primary motivation for creating this project was to provide\nan easy way to try out various Neovim configurations, `lazyman` can be used\nto setup and manage Neovim configurations tailored for specific purposes.\nA Neovim configuration for work, one for school, one for Python development,\nanother for git repository maintenance and markdown editing, one with language\nservers and debugging tools, one for your mom.\n\nIt's also pretty interesting and educational to see how some of these\n**Neovim Wizards** setup their configurations.\n\n### Inspiration\n\nLazyman was inspired by several other Neovim distributions and configurations\nincluding:\n\n- [Michael Peter](https://github.com/Allaman/nvim.git)\n- [loctvl](https://github.com/loctvl842/nvim.git)\n- [Marc Jakobi](https://github.com/mrcjkb/nvim-config.git)\n- [LazyVim](https://github.com/LazyVim/LazyVim)\n- [LunarVim](https://github.com/LunarVim/LunarVim)\n- [NvChad](https://nvchad.github.io/)\n- [rayx](https://github.com/ray-x/nvim.git)\n\nSome of these distributions, like the work of Michael Peter, are released\nunder an MIT license and I was able to copy directly configuration or\ninitialization code. Others, like the work of Marc Jakobi, are released\nunder a more restrictive license and I was only able to use these as\nreference but still a valuable aid. I copied my own previous work liberally.\n\nThanks everybody!\n\n## Notes\n\nView the Lazyman Notes in the\n[Lazyman Notes article on the Lazyman website](https://lazyman.dev/posts/Notes).\n\n### Windows Subsystem for Linux\n\nIf you have installed `Lazyman` in the Windows Subsystem for Linux (WSL)\nthen set the `NVIM_APPNAME` environment variable on the Windows side with:\n\n```bash\nsetx NVIM_APPNAME \"nvim-\u003cConfigName\u003e\"\n# For example, to use the AstroNvimV4 configuration\nsetx NVIM_APPNAME \"nvim-AstroNvimV4\"\n```\n\nWhere `nvim-\u003cConfigName\u003e` is the Neovim configuration directory you want to use in WSL.\n\nThen set `WSLENV` to include `NVIM_APPNAME` with something like:\n\n```bash\nsetx WSLENV NVIM_APPNAME/u\n```\n\n## Removal\n\nThe [lazyman.sh](lazyman.sh) script can be used to remove previously installed\nNeovim configurations with the `-r` command line option. For example, to remove\na previously installed `LazyVim` configuration, its initialized plugins, state,\nand cache, execute the following command:\n\n```bash\n$HOME/.config/nvim-Lazyman/lazyman.sh -l -r\n```\n\nTo remove the `nvim-Lazyman` configuration and associated plugins, state, and cache:\n\n```bash\n$HOME/.config/nvim-Lazyman/lazyman.sh -r\n```\n\nAll `lazyman.sh` operations can be performed as a dry run with `-n`. For\nexample, to see which `LazyVim` folders would be removed without removing any:\n\n```bash\n$HOME/.config/nvim-Lazyman/lazyman.sh -n -l -r\n```\n\n## Known limitations and troubleshooting\n\nView Lazyman known limitations and troubleshooting in the\n[Known Limitations and Troubleshooting](https://lazyman.dev/posts/Limitations-and-Troubleshooting)\narticle on the website.\n\n## Appendix\n\n### Get configuration script\n\nNeovim 0.9 introduced a new feature which allows execution of Lua scripts\nin Neovim from the shell command line. The `lazyman` configuration menu\ninterface uses this new feature to get the current Lazyman Neovim\nconfiguration with shell commands like:\n\n```bash\nGET_CONF=\"${HOME}/.config/nvim-Lazyman/scripts/get_conf.lua\"\nconfval=$(NVIM_APPNAME=\"nvim-Lazyman\" nvim -l ${GET_CONF} ${confname} 2\u003e\u00261)\n```\n\nThe `get_conf.lua` script can also be used to retrieve option or variable\nsettings in any Neovim configuration. For example, to retrieve the value of\nthe 'mouse' option in the `nvim-Webdev` Neovim configuration:\n\n```bash\nGET_CONF=\"${HOME}/.config/nvim-Lazyman/scripts/get_conf.lua\"\nNVIM_APPNAME=\"nvim-Webdev\" nvim -l ${GET_CONF} mouse\n```\n\n\u003cdetails\u003e\u003csummary\u003eClick here to view the\n\n**Lazyman `get_conf.lua` script**\n\n\u003c/summary\u003e\n\n```lua\n-- Invoke with 'nvim -l get_conf.lua conf_name'\n-- Where 'conf_name' is:\n--   - one of the entries in lua/configuration.lua\n--   - the keyword 'config_home' to get configuration location info\n--   - an option/variable name to retrieve its value\n--\n-- For example, to retrieve the Lazyman configuration 'namespace' setting:\n--\n-- #!/bin/bash\n-- NVIM_APPNAME=\"nvim-Lazyman\" \\\n--   nvim -l ~/.config/nvim-Lazyman/scripts/get_conf.lua namespace\n--\n-- or, to retrieve the value of the 'mouse' option in the Webdev config:\n--\n-- #!/bin/bash\n-- NVIM_APPNAME=\"nvim-Webdev\" \\\n--   nvim -l ~/.config/nvim-Lazyman/scripts/get_conf.lua mouse\n\nlocal config = vim.inspect(_G.arg[1])\nlocal arg = string.gsub(config, '\"', \"\")\nlocal app_name = os.getenv(\"NVIM_APPNAME\") or \"\"\n\nlocal function get_var(var_name, default_value)\n  local s, v = pcall(function()\n    return vim.api.nvim_get_option(var_name)\n  end)\n  if s then\n    return v\n  else\n    s, v = pcall(function()\n      return vim.api.nvim_get_var(var_name)\n    end)\n    if s then\n      return v\n    else\n      return default_value\n    end\n  end\nend\n\nlocal function print_var(entry)\n  if type(entry) == \"string\" then\n    io.write(entry .. \"\\n\")\n  elseif type(entry) == \"table\" then\n    table.sort(entry)\n    for _, val in ipairs(entry) do\n      io.write(val .. \"\\n\")\n    end\n  else\n    io.write(tostring(entry) .. \"\\n\")\n  end\nend\n\nif arg == \"config_home\" then\n  local config_home = vim.fn.stdpath(\"config\")\n  io.write(\"Neovim configuration location = \" .. vim.fn.expand(config_home) .. \"\\n\")\n  io.write(\"NVIM_APPNAME = \" .. app_name .. \"\\n\")\nelse\n  local var_val = \"\"\n  if app_name == \"nvim-Lazyman\" then\n    local settings = require(\"configuration\")\n    local entry = settings[arg]\n    if entry ~= nil then\n      print_var(entry)\n    else\n      var_val = get_var(arg, \"\")\n      print_var(var_val)\n    end\n  else\n    var_val = get_var(arg, \"\")\n    print_var(var_val)\n  end\nend\n```\n\n\u003c/details\u003e\n\nPretty simple, huh? Thanks Neovim!\n\n### Lazyman source code\n\nThe convenience script to install and initialize `nvim-Lazyman` is provided at\n[lazyman.sh](lazyman.sh). The automated install and initialization is performed\nby `lazyman` and [install_neovim.sh](scripts/install_neovim.sh).\n\nView the lazyman.sh script on the\n[Lazyman website](https://lazyman.dev/info/lazyman_command)\n\n### Install neovim and tools\n\nThe `lazyman` command checks for a current version of Neovim and, if not found\nor if the existing version is less than 0.9, invokes the `install_neovim.sh`\nscript to install Neovim, dependencies, language servers, and tools.\n\nNot all language servers and tools are installed. If additional language\nsupport is desired, it can usually be provided by Mason or Homebrew.\nFor example, to provide support for Composer run `brew install composer`.\n\nThe automated Neovim installation is performed by\n[install_neovim.sh](scripts/install_neovim.sh). View the `install_neovim.sh`\nscript on the\n[Lazyman website](https://lazyman.dev/info/install_neovim).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoctorfree%2Fnvim-lazyman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdoctorfree%2Fnvim-lazyman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoctorfree%2Fnvim-lazyman/lists"}