The purr-fect Neovim configuration for a cozy coding session. May or may not increase your productivity by a feline factor.
A carefully crafted Neovim configuration that provides a modern development environment. Part of the project meow
, meowvim
includes curated plugins, intelligent defaults, and a consistent user experience.
- 🚀 Zero Configuration: Works out of the box with sensible defaults
- 🎨 Modern Interface: Tokyo Night theme with clean UI components
- 🖥️ GUI Support: Optimized for both terminal and Neovide GUI experience
- 📱 Raycast Integration: Quick launcher scripts for macOS productivity
- 🧠 AI-Powered: GitHub Copilot integration for coding assistance
- ⚡ Performance: Optimized with lazy loading
- 🔧 Customizable: Easy to extend and modify
- 🌐 Language Support: Works with major programming languages
- 📦 Plugin Collection: 50+ curated plugins for development
- ✨ Features
- 📋 Prerequisites
- 🚀 Installation
- ⚡ Quick Start
- ⚙️ Configuration
- 🔧 Troubleshooting
- 🤝 Contributing
- 📄 License
- 🙏 Acknowledgments
meowvim
includes these development features:
- LSP Support: Language Server Protocol integration with automatic setup
- GitHub Copilot: AI-powered code completion and suggestions
- Completion Engine: Context-aware autocompletion with nvim-cmp
- Code Snippets: Snippet collection with LuaSnip
- Syntax Highlighting: Syntax highlighting with Treesitter
- Tokyo Night Theme: Modern, readable colorscheme
- Status Line: Informative status bar with Git integration
- Buffer Management: Buffer navigation and organization
- Icons: Consistent iconography throughout
- Indent Guides: Visual indentation helpers
- Git Integration: Git workflow with Gitsigns and Fugitive
- Code Formatting: Automatic formatting with Conform.nvim
- Linting: Real-time code linting with nvim-lint
- Debugging: Debugging support with nvim-dap and specialized Go support
- Testing: Test runner integration with Neotest
- Note Taking: Neorg for structured note-taking and documentation
- Fuzzy Finder: File and text search with Snacks
- Auto-save: Automatic file saving
- Session Management: Session persistence with auto-session
- Quick Navigation: Leap motion and Flit for cursor movement
- Comment Handling: Smart comment toggling
- Auto-pairs: Automatic bracket and quote pairing
- Note Taking: Neorg integration for organized note-taking
- Scratch Buffers: Quick scratch notes and temporary buffers
- Go: Go development support with testing
- TypeScript/JavaScript: JS/TS development
- Python: Python development support
- Lua: Lua development for Neovim
- Additional languages: Extensible language support
Before installing meowvim
, ensure you have the following:
- Neovim ≥ 0.10.0
- Git (for plugin management)
- A terminal with true color support
- Node.js ≥ 18.0 (for some LSP servers and Copilot)
- Python ≥ 3.8 (for Python LSP and some plugins)
- Go ≥ 1.19 (for Go development)
- Ripgrep (for faster searching)
- fd (for faster file finding)
- fzf (for fuzzy finding)
- JetBrains Mono Nerd Font (for proper icon display)
- GitHub Copilot subscription (for AI features)
- Neovide (for GUI experience with enhanced visual features)
If you're starting fresh or want to replace your current Neovim config:
# Backup your existing config (if any)
mv ~/.config/nvim ~/.config/nvim.backup
# Clone meowvim
git clone https://github.com/retran/meowvim.git ~/.config/nvim
# Start Neovim - plugins will install automatically
nvim
If you're using meow
dotfiles management system:
# Clone the meow system
git clone https://github.com/retran/meow.git ~/.meow
# Initialize and update submodules (meowvim is connected as submodule)
cd ~/.meow
git submodule init
git submodule update
# Follow the meow installation instructions
./bin/meowctl install personal
After installation, follow these steps to get started:
nvim
On first launch, meowvim
will:
- Install the Lazy.nvim plugin manager
- Download and install all plugins
- Configure Language Server Protocol (LSP) servers automatically
- Leader key:
Space
(main entry point for features) - Open project:
Space, f, p
(orp
from dashboard) - Find files:
Space, f, f
(orf
from dashboard) - Leap motion:
Space, Space
for quick cursor jumps - Open scratch buffer:
Space, .
- Dashboard navigation: Use the shortcuts shown on the dashboard
:Copilot auth
meowvim
is highly customizable. Here's how to make it your own:
~/.config/nvim/
├── init.lua # Main configuration entry point
├── lua/
│ ├── config/
│ │ ├── options.lua # Neovim options
│ │ ├── keymaps.lua # Key mappings
│ │ └── neovide.lua # Neovide-specific settings
│ ├── plugins/ # Plugin configurations
│ ├── utils/ # Utility functions and patches
├── scripts/ # Helper scripts (icon display)
├── bin/ # Raycast integration scripts
└── assets/ # Icons and resources
Edit lua/config/options.lua
to change Neovim settings:
-- Example: Change tab width
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
-- Example: Enable line wrapping
vim.opt.wrap = true
Create a new file in lua/plugins/
directory:
-- lua/plugins/my-plugin.lua
return {
"author/plugin-name",
config = function()
-- Plugin configuration
end,
}
Edit lua/config/keymaps.lua
to add your own key mappings:
-- Add your custom keymaps
{ "<leader>mp", ":MyPlugin<CR>", desc = "My Plugin" },
Switch themes by editing lua/plugins/tokyonight.lua
:
-- Change variant
vim.cmd.colorscheme("tokyonight-storm") -- or "tokyonight-day"
meowvim
includes Neorg for structured note-taking:
-- Notes directory (default: ~/notes)
-- Configure in lua/plugins/neorg.lua
Use :Neorg workspace main
to access your notes workspace.
meowvim
includes Raycast scripts for quick launching:
bin/meowvim.sh
- Launch meowvim with Neovidebin/meowvim-container.sh
- Connect to litterbox container
Copy these scripts to your Raycast script directory to enable quick access.
# Clear plugin cache and reinstall
rm -rf ~/.local/share/nvim/lazy
nvim --headless "+Lazy sync" +qa
-
Check if the language server is installed:
:LspInfo
-
Language servers are managed by the
meow
. If you installedmeowvim
as part ofmeow
, they should be automatically available. -
For standalone installation, you may need to install servers manually:
# TypeScript/JavaScript npm install -g typescript typescript-language-server # Python pip install python-lsp-server # Go go install golang.org/x/tools/gopls@latest # Rust rustup component add rust-analyzer
-
Authenticate with GitHub:
:Copilot auth
-
Check status:
:Copilot status
-
Check startup time:
:StartupTime
-
Disable unused plugins in
lua/plugins/
Install JetBrains Mono Nerd Font.
- Use
:help
for Neovim documentation - Check
:Lazy
for plugin management - Use
<Space>?
for Which-key help - Check the issues page
Contributions are welcome to help improve meowvim
! Here's how you can help:
- 🐛 Report bugs
- 💡 Suggest new features
- 📝 Improve documentation
- 🔧 Submit code improvements
- 🎨 Enhance themes and UI
This project is licensed under the MIT License. See the LICENSE file for details.
meowvim
builds on the excellent work of the Neovim community.
- Neovim - The extensible text editor
- Lazy.nvim - Modern plugin manager
- Tokyo Night - Beautiful colorscheme
- auto-save.nvim - Automatic file saving
- auto-session - Session management and persistence
- bufferline.nvim - Buffer line with tabs
- cmp-buffer - Buffer completion source
- cmp-nvim-lsp - LSP completion source
- cmp-path - Path completion source
- cmp_luasnip - LuaSnip completion source
- Comment.nvim - Smart commenting
- conform.nvim - Code formatting
- copilot.lua - GitHub Copilot integration
- copilot-cmp - Copilot completion source
- copilot-lualine - Copilot status in lualine
- FixCursorHold.nvim - Fix CursorHold performance
- flit.nvim - Enhanced f/t motions
- friendly-snippets - Snippet collection
- gitsigns.nvim - Git integration
- indent-blankline.nvim - Indentation guides
- leap.nvim - Quick navigation
- lspkind.nvim - LSP kind icons
- lualine.nvim - Status line
- luarocks.nvim - Lua package manager
- LuaSnip - Snippet engine
- neodev.nvim - Lua development setup
- neorg - Note-taking and organization
- neotest - Test runner
- neotest-go - Go test adapter
- noice.nvim - Improved UI
- nui.nvim - UI components library
- nvim-autopairs - Auto-pairing
- nvim-cmp - Completion engine
- nvim-dap - Debug adapter protocol
- nvim-dap-go - Go debug adapter
- nvim-dap-ui - Debug UI
- nvim-dap-virtual-text - Virtual text for debugging
- nvim-lint - Linting
- nvim-lspconfig - LSP configuration
- nvim-nio - Async I/O library
- nvim-notify - Notification system
- nvim-treesitter - Syntax highlighting
- nvim-treesitter-context - Context display
- nvim-treesitter-textobjects - Text objects
- nvim-ts-context-commentstring - Context-aware commenting
- nvim-web-devicons - File icons
- plenary.nvim - Lua utilities
- SchemaStore.nvim - JSON schema store
- snacks.nvim - Collection of utilities
- vim-fugitive - Git commands
- vim-repeat - Repeat plugin commands
- vim-rhubarb - GitHub integration for fugitive
- vim-startuptime - Startup profiling
- which-key.nvim - Keybinding help
meowvim
is developed by Andrew Vasilyev with help from GitHub Copilot and feline assistants Sonya Blade, Mila, and Marcus Fenix.
Happy coding with project meow
! 🐱
Made with ❤️ by Andrew Vasilyev and feline assistants