Lazyman Features
Lazyman Command Features
lazyman
command to easily install, initialize, manage, and explore multiple Neovim configurations- support for
Lazy
,Packer
, andvim-plug
plugin managers (dein
forSpaceVim
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
, andWebdev
configs via menus - perform health checks and generate a status report via menus
- manage the
- convenience shell functions and aliases with fuzzy search and selection
nvims
andneovides
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 folderstldrf
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.
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.namespace
setting inlua/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
)
- 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
:Cheatsheet
command, fuzzy searchlazyman
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
)
- 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: