Lazyman Features
Lazyman Command Features
lazymancommand to easily install, initialize, manage, and explore multiple Neovim configurations- support for
Lazy,Packer, andvim-plugplugin managers (deinforSpaceVimonly) - open, install, remove, get info, search plugins, all from the command line or main menu
- automated installation of dependencies, tools, language servers, and Neovim 0.9+
- install and manage the
Bobneovim version manager via a menu interface - richly configured
LazymanNeovim configuration - interactive menu interface for ease of management
- manage the
Lazyman,LazyIde, andWebdevconfigs via menus - perform health checks and generate a status report via menus
- manage the
- convenience shell functions and aliases with fuzzy search and selection
nvimsandneovidesshell functions to fuzzy search, select, and open Neovim configs- enhanced
lesscommand alias - enhanced
lscommand alias treealias to display a tree view of files and folderstldrfalias to fuzzy search, select, and preview cheat sheets
- vimdoc help for
Lazymanwith:h Lazymanor,hl - vimdoc help for
nvimswith:h Nvimsor,hn - vimdoc help for
Lazymankeymaps with:h Lazyman-Keymapsor,hk - over 100 supported Neovim configurations out of the box, additional custom configs
See the Usage section for details on lazyman command usage.
The nvims fuzzy selector
The lazyman installation and configuration automatically configures convenience aliases and shell functions for Lazyman installed Neovim configurations. One of these is the nvims shell function which dynamically creates a fuzzy searchable menu of installed Neovim configurations and launches Neovim with the selected Lazyman Neovim configuration.
See ~/.config/nvim-Lazyman/.lazymanrc.
Similarly, a neovides shell function can be used to select a Neovim configuration for use with the Neovim GUI neovide.
The fuzzy searchable/selectable menu of Neovim configurations can also be shown with the command lazyman -S. Note also that both the nvims shell function and the lazyman -S command can accept additional filename arguments which are then passed to Neovim. For example, to edit /tmp/foo.lua with a Neovim configuration selected from the nvims menu:
1
nvims /tmp/foo.lua
See Neovim Configuration Fuzzy Selector for additional details on use of the nvims and neovides shell functions.
Menu Configuration Management
Lazyman provides a character-based menu system which includes menu management of several Neovim configurations. Menu configuration management is supported for the following Lazyman Neovim configurations:
To view the Lazyman Configuration Menu, select the Lazyman Config option from the main menu or execute the command:
1
lazyman -F
If the LazyIde or Webdev Neovim configurations have been installed then menu entries will be presented for LazyIde Config and Webdev Config.
Command line arguments can be used to open Lazyman menus directly. For example, to open the Lazyman plugins configuration menu directly from the command line, execute the command lazyman -F plugins.
The following command line menu entry points are supported:
lazyman -F config- Lazyman Neovim configuration menu
lazyman -F plugins- Lazyman plugins configuration menu
lazyman -F lsp- Lazyman language server configuration menu
lazyman -F format- Lazyman formatters and linters configuration menu
lazyman -F lazyide- LazyIde Neovim configuration menu
lazyman -F webdev- Webdev Neovim configuration menu
Neovim configuration options, settings, formatters, linters, language servers, and plugins can be managed via these menus.
Get configuration script
Neovim 0.9 introduced a new feature which allows execution of Lua scripts in Neovim from the shell command line. The lazyman configuration menu interface uses this new feature to get the current Lazyman Neovim configuration with shell commands like:
1
2
GET_CONF="${HOME}/.config/nvim-Lazyman/scripts/get_conf.lua"
confval=$(NVIM_APPNAME="nvim-Lazyman" nvim -l ${GET_CONF} ${confname} 2>&1)
The get_conf.lua script can also be used to retrieve option or variable settings in any Neovim configuration. For example, to retrieve the value of the ‘mouse’ option in the Webdev Neovim configuration:
1
2
GET_CONF="${HOME}/.config/nvim-Lazyman/scripts/get_conf.lua"
NVIM_APPNAME="nvim-Webdev" nvim -l ${GET_CONF} mouse
Lazyman source code
The convenience script to install and initialize Lazyman is provided by lazyman.sh.
Install neovim and tools
The lazyman command checks for a current version of Neovim and, if not found or if the existing version is less than 0.9, invokes the install_neovim.sh script to install Neovim, dependencies, language servers, and tools.
Not all language servers and tools are installed. If additional language support is desired, it can usually be provided by Mason or native package installation. For example, to provide support for composer, php, julia, and luarocks run lazyman -I.
The automated install and initialization is performed by lazyman and install_neovim.sh.
Lazyman Neovim Configuration Features
General
The Lazyman Neovim configuration can be managed via the lazyman menu system. When managing the Lazyman Neovim configuration, the lazyman command invokes scripts/lazyman_config.sh.
In addition to the menu configuration management, the following features are supported:
- Package management and plugin configuration via lazy.nvim
- Easily configure namespace, theme, active plugins, and their configuration via
configuration.lua - Multiple namespaces, it is really 3 configurations in one. Switch between namespaces with the
conf.namespacesetting inlua/configuration.luaor via the Lazyman menu system (lazyman -F). - Preconfigured themes: catppuccin, tokyonight, nightfox, tundra, dracula, kanagawa, onedarkpro, everforest, monokai-pro
- Keymap to toggle transparency for several color schemes (
,ut)
- Keymap to toggle transparency for several color schemes (
- AI developer assistants:
- Support for Github Copilot with completions
- Support for ChatGPT using ChatGPT.nvim
- Uses ChatGPT prompts from Awesome ChatGPT Prompts
- Support for Neoai plugin for OpenAI’s GPT-4
- Auto-configure codeexplain.nvim (GPT4ALL) if the GPT model is found
- Lazyman menu provides auto-download and setup (requires Python 3.9 or greater)
- This plugin is new and experimental. Unlike ChatGPT, it uses a self-hosted model and requires no API key or money
- Custom Lazyman Cheat Sheets using cheatsheet.nvim
:Cheatsheetcommand, fuzzy searchlazymanfor custom Lazyman keymaps
- Mnemonic keyboard mappings inspired by Spacemacs via which-key.nvim; no more than three keystrokes for each keybinding
- Replace the UI for messages, cmdline and popup menu via noice.nvim
- Fully featured status line via lualine and tabline
- Terminal integration via nvim-toggleterm.lua
- Terminal management via terminal.nvim
- Preconfigured Neovim terminal execution of
lazymancommand (<leader>lm) - Preconfigured Neovim terminal execution of
asciivillecommand (<leader>A) - Preconfigured Neovim terminal execution of
htopcommand (<leader>H)
- Preconfigured Neovim terminal execution of
- Fancy notifications via nvim-notify
- Code diagnostics via LSP
- Choice of preconfigured dashboard: alpha (default), dashboard-nvim, or mini.starter
- Git management with Lazygit, custom telescope commits view with git-delta, gitsigns & diffview, custom git blame
- Neovim games for fun and learning (Sudoku, Blackjack, vim-be-good practice basic movements, and more).
- Key map
<leader>G(e.g.,G) displays the available games and amusements.
- Key map
- Github actions to publish docker image on Docker Hub, check spelling/syntax, and auto-generate vim help doc (see
.github/workflows/*.yml) - Over 100 plugins with custom configuration and management via menu system
Namespace ecovim features
In addition to the above general features, the ecovim namespace of the Lazyman Neovim configuration includes the following features:
- Beautiful and functional custom statusline built with galaxyline.nvim
- Configured for TypeScript Development (React.js, Next.js, Vue.js, Angular, Node.js etc.)
- Support for TailwindCSS with highlighted colors
- JSON autocompletion for most popular Frontend configs
- NPM packages autocompletion in package.json
- Internal Jest testing and Coverage support
- Debugging with nvim-dap (works with React.js & React Native)
- Automatic Treesitter-based folding with imports folded by default
- Current code context via nvim-navic
Lazyman configuration plugins list and language server support
See Lazyman Configuration Plugins and Servers for listings and descriptions of plugins and language servers used by the Lazyman Neovim configuration.
Navigation
- Telescope.nvim for all your search needs
- Project management with Project.nvim
- File tree navigation/manipulation via neo-tree
- Better Tmux navigation with your home row via Navigator.nvim
- Convenient jumping through windows with nvim-window-picker
Coding
- Auto completion powered by nvim-cmp
- Built-in LSP configured via nvim-lspconfig, mason, and mason-lspconfig
- Debugging for Go and Python via nvim-dap and friends
- Treesitter and Tresitter-textobjects for your syntax needs
- Auto formatting via null-ls.nvim
- Excellent Go support via LSP and go.nvim including sensible keybindings
- Always know where you are in your code via nvim-navic
- Git integration via Neogit and gitsigns
- Outlining symbols with symbols-outline.nvim
- Snippets provided by Luasnip and friendly snippets with autocompletion
- Auto-install and setup of dozens of language servers including:
ansiblels,astro,awk_ls,bashls,clangd,ccls,cmake,cssmodules_ls,denols,dockerls,eslint,gopls,graphql,html,jdtls,jsonls,julials,lua_ls,ltex,marksman,pylsp,pyright,rust_analyzer,sqlls,svelte,tailwindcss,taplo,texlab,tflint,tsserver,vimls,yamlls
Go development
Debugging via DAP
Lazyman Neovim Terminal
The Lazyman Neovim configuration includes Neovim Terminal management via terminal.nvim. This Neovim terminal is preconfigured for execution of the lazyman command. A shortcut key binding to execute lazyman in a Neovim terminal has also been provided: (<leader>lm). While in Neovim with the default nvim-Lazyman configuration, pressing ,lm will execute the lazyman command in a Neovim floating terminal window. Alternately, executing the Neovim command :Lazyman will also bring up the lazyman command in a Neovim terminal.
If Asciiville is installed, pressing ,A or executing the :Asciiville Neovim command will execute the asciiville command in a Neovim floating terminal window.
If the htop command is available, :Htop will execute the htop system monitor in a floating Neovim terminal window.
This preconfigured Neovim terminal capability is only available in the Lazyman Neovim configuration and not in the other configs.
Multiple namespace support
The Lazyman Neovim configuration supports multiple namespaces, each of which has its own separate and distinct configuration, options, plugins, and style.
Use the Lazyman configuration menu to select a namespace (lazyman -F).
The default namespace is free. This was the traditional namespace used by all previous versions of Lazyman:
The onno namespace is based on the ONNO Lazyman Neovim configuration:
The ecovim namespace is based on the Ecovim Lazyman Neovim configuration:







