-
-
Notifications
You must be signed in to change notification settings - Fork 6
Lazyman 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.
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
- 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 inlua/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
)
- Keymap to toggle transparency for several color schemes (
- Auto-configure ChatGPT (GPT-4) if
OPENAI_API_KEY
is found in the environment using ChatGPT.nvim- Uses ChatGPT prompts from Awesome ChatGPT Prompts
- 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
- 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
- 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
- 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
Go development
Debugging via DAP
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.
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:
Leader Key Clusters via which-key
See ./lua/plugins/which-key.lua
for details.
If you have Docker on your system you can try out this config via the provided Dockerfile
You can build the Docker image locally on your own:
docker build -t nvim .
docker run --name nvim --rm -it nvim
docker run --name nvim --rm -it -v ${HOME}/tmp:/home/nvim/mount nvim
docker run --name nvim --rm -it --entrypoint=/bin/bash nvim
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
.