Features

Features

Lazyman Features

Lazyman Command Features

  • lazyman command to easily install, initialize, manage, and explore multiple Neovim configurations
  • support for Lazy, Packer, and vim-plug plugin managers (dein for SpaceVim only)
  • 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 Bob neovim version manager via a menu interface
  • richly configured Lazyman Neovim configuration
  • interactive menu interface for ease of management
    • manage the Lazyman, LazyIde, and Webdev configs via menus
    • perform health checks and generate a status report via menus
  • convenience shell functions and aliases with fuzzy search and selection
    • nvims and neovides shell functions to fuzzy search, select, and open Neovim configs
    • enhanced less command alias
    • enhanced ls command alias
    • tree alias to display a tree view of files and folders
    • tldrf alias to fuzzy search, select, and preview cheat sheets
  • vimdoc help for Lazyman with :h Lazyman or ,hl
  • vimdoc help for nvims with :h Nvims or ,hn
  • vimdoc help for Lazyman keymaps with :h Lazyman-Keymaps or ,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.

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

Plugins Leader Manager

Plugins

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.namespace setting in lua/configuration.lua or 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)
  • AI developer assistants:
  • 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
    • :Cheatsheet command, fuzzy search lazyman for 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 lazyman command (<leader>lm)
    • Preconfigured Neovim terminal execution of asciiville command (<leader>A)
    • Preconfigured Neovim terminal execution of htop command (<leader>H)
  • 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.
  • 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.

alpha

Coding

diagnostics

  • 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

go

Debugging via DAP

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:

free

The onno namespace is based on the ONNO Lazyman Neovim configuration:

onno

The ecovim namespace is based on the Ecovim Lazyman Neovim configuration:

ecovim