Skip to content

maarutan/moonlight.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

106 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

M O O N L I G H T 🌙

--                             M O O N L I G H T.nvim
--       _..._         _..._         _..._         _..._         _..._
--     .:::::::.     .::::. `.     .::::  `.     .::'   `.     .'     `.
--    :::::::::::   :::::::.  :   ::::::    :   :::       :   :         :
--    :::::::::::   ::::::::  :   ::::::    :   :::       :   :         :
--    `:::::::::'   `::::::' .'   `:::::   .'   `::.     .'   `.       .'
--      `':::''       `'::'-'       `'::.-'       `':..-'       `-...-'
--
--------------------------------------------------------------------->
--              ┌┬┐ ┌─┐ ┌─┐ ┌┐┌  ┬   ┬ ┌─┐ ┬ ┬ ┌┬┐                Z
--              │││ │ │ │ │ │││  │   │ │ ┌ ┬─┼  │              Z
--              ┴ ┴ └─┘ └─┘ ┘└┘  ┴─┘ ┴ └─┘ ┴ ┴  ┴ .nvim   z
--------------------------------------------------------------------->

🗂 Map list

📝 Description

Moonlight.nvim is a custom Neovim configuration focused on productivity and maximum comfort. Written entirely in Lua, it follows a declarative setup using the lazy.nvim plugin manager.

Designed to feel like a full-featured IDE, Moonlight.nvim balances minimalism and power. LSP and tooling (formatter, linter, etc.) are disabled by default and can be enabled declaratively.

To initialize tools, simply run:

:MasonToolsUpdate

Explore lua/dev/mason to manage your LSP, linters, and formatters declaratively. Check Requirements 📦

📦 Requirements

Linux 🐧: neovim bash coreutils curl git gcc make zip unzip go lua luarocks python python-pip nodejs npm cargo ripgrep fd tree-sitter imagemagick trash-cli

Arch Linux

sudo pacman -Sy neovim bash coreutils curl git gcc make zip unzip go lua luarocks python python-pip nodejs npm cargo ripgrep fd tree-sitter imagemagick trash-cli

MacOS 🍎: neovim bash coreutils curl git gcc make zip unzip go lua luarocks python python-pip nodejs npm cargo ripgrep fd tree-sitter imagemagick

Homebrew

brew install neovim bash coreutils curl git gcc make zip unzip go lua luarocks python node rust ripgrep fd tree-sitter-cli imagemagick

📥 Installation

Before installation: make sure to back up your existing Neovim configuration. If Moonlight.nvim fails to start, you can easily restore it. If any issues occur, please open a GitHub issue so it can be fixed quickly.

Unix 📏 (Linux, macOS)

config_dir=~/.config/nvim
if [[ -d  $config_dir ]]; then
    echo "Backing up existing config to $config_dir"
    mv ~/.config/nvim ~/.config/nvim.bak
fi
mkdir -p '$config_dir'
clone="git clone --depth 1 https://github.com/maarutan/moonlight.nvim.git '$config_dir'"
bash -c "$clone"
nvim

Windows 🪐

$config_dir = "$env:USERPROFILE\AppData\Local\nvim"

if (Test-Path $config_dir) {
    Write-Host "Backing up existing config to $config_dir.bak"
    Move-Item -Path $config_dir -Destination "$config_dir.bak" -Force
}

git clone --depth 1 https://github.com/maarutan/moonlight.nvim.git $config_dir
nvim

📷 Screenshots

Dashboard Python
image python

😽 Kitty Terminal

The Moonlight.nvim setup is designed for the Kitty terminal. It supports inline image previews and advanced copy functionality through kitty-scrollback.nvim, as well as dynamic font and layout synchronization via kitty-lock.json.

Kitty is strongly recommended for the full Moonlight.nvim experience.

If you want to configure kitty_tern for font control, navigate to:

lua/plugins/tools/kitty_term/config

There you'll see:

M.setup = {
  config_path = "kitty-lock.json",
  kitty_path  = "~/.config/kitty/font.cfg",
}
  • config_path — path to kitty-lock.json starting from your nvim/ directory.
  • kitty_path — path to your Kitty configuration file containing font settings.

⌨ Keymaps

  • <leader>ku — Kitty Font +1
  • <leader>kd — Kitty Font -1
  • <leader>kf — Kitty Font Picker
  • <leader>ks — Kitty Size Picker
  • <leader>kr — Kitty Reload Config
  • <leader>ki — Kitty Status Config

⌨️ All Keymaps

  • lua/plugins/which_key.lua
  • This is a dedicated plugin that provides preview and organization of all plugin-specific keymaps.
  • It allows you to quickly visualize and explore available keybindings through a dynamic pop-up menu.
  • Used exclusively for plugin-defined keymaps to keep configuration modular and decluttered.

  • lua/core/keymaps.lua
  • Contains all default, core, and fallback keybindings for Neovim.
  • These mappings work even if lazy.nvim is not loaded or plugins are disabled.

Together, these two layers form a clean separation between core navigation and plugin integrations, ensuring that your environment remains responsive and predictable even during partial plugin loading.


📝 License

See the License 🔑


Built with ❤️ by maarutan
I wish you maximum productivity. ⚡⚡⚡

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages