Skip to content

Lazyman Configuration

Ronald Record edited this page Sep 6, 2023 · 15 revisions

Lazyman Neovim Configuration

The nvim-Lazyman Neovim configuration is a synthesis of the best features from LazyVim, AstroNvim, the Allaman, ONNO, and Ecovim configs, and several others combined with some features from my vim-plug based Vim configuration and many enhancements.

One of the features of the nvim-Lazyman Neovim configuration is the lua/configuration.lua configuration file which allows the user to enable or disable a variety of features. For example, this file controls which dashboard is used, whether Noice is enabled, which session manager is used, which theme is used, and much more.

This document will attempt to describe the features, options, plugin configurations, and key bindings of the nvim-Lazyman Neovim configuration.

Details of the nvim-Lazyman configuration menu system can be viewed in the source code listing. Similar menu configuration systems can be found for the nvim-LazyIde configuration and the nvim-Webdev configuration. These may be the first and only Neovim menu configuration systems in existence. Let us know if others exist.

Features

The primary feature of the nvim-Lazyman Neovim configuration is the inclusion of the lazyman command to easily install, initialize, manage, and explore multiple Neovim configurations. In addition, the lazyman command provides a menu interface to manage multiple Neovim configurations and sub-menus to easily configure and manage the Lazyman Neoovim configuration.

  • lazyman command to easily install, initialize, manage, and explore multiple Neovim configurations
  • support for Lazy, Packer, and vim-plug plugin managers
  • automated installation of dependencies, tools, language servers, and Neovim 0.9
  • richly configured nvim-Lazyman Neovim configuration
  • interactive menu interface for ease of management
  • 31 supported Neovim configurations out of the box, additional custom configs
  • convenience shell functions and aliases with fuzzy search and selection
  • vimdoc help for nvim-Lazyman with :h nvim-Lazyman

Lazyman Neovim Configuration Features

General ⚙️

  • Package management and plugin configuration via lazy.nvim
  • 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).
  • Easily configure theme, active plugins, and their configuration via configuration.lua
  • Preconfigured themes: catppuccin, tokyonight, nightfox, tundra, dracula, kanagawa, onedarkpro, everforest, monokai-pro
    • Keymap to toggle transparency for several color schemes (,ut)
  • Auto-configure ChatGPT (GPT-4) if OPENAI_API_KEY is found in the environment using ChatGPT.nvim
  • 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
  • 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

Navigation 🧭

Coding 🖥️

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:

Key bindings

Leader Key Clusters via which-key

See ./lua/plugins/which-key.lua for details.

Docker

If you have Docker on your system you can try out this config via the provided Dockerfile

Build the image

You can build the Docker image locally on your own:

docker build -t nvim .

Start neovim

docker run --name nvim --rm -it nvim

Mount a local directory (to ~/mount) and start nvim

docker run --name nvim --rm -it -v ${HOME}/tmp:/home/nvim/mount nvim

Start container in bash instead of nvim

docker run --name nvim --rm -it --entrypoint=/bin/bash nvim

Installation

The installation script sets up all required tools on a fresh machine to work with the Lazyman Neovim config. The installation script can be invoked with lazyman -I.