Before You Begin
Make sure you’ve completed all the prerequisites before proceeding with the installation.Installation Steps
Clone the Repository
Clone the Neovim from Scratch repository into your Neovim configuration directory:This places the configuration files in the standard location where Neovim looks for user configurations.
On Windows, the configuration directory is
~/AppData/Local/nvim instead of ~/.config/nvim.Launch Neovim
Start Neovim for the first time:On first launch, you’ll see Packer automatically install itself and begin downloading plugins. This process may take a minute or two depending on your internet connection.You’ll see output similar to:
Wait for Plugin Installation
Packer will automatically install all configured plugins. You’ll see a floating window showing the installation progress with status for each plugin.The installation includes:
- LSP support (nvim-lspconfig, Mason)
- Autocompletion (nvim-cmp and sources)
- Syntax highlighting (Treesitter)
- File navigation (Telescope, nvim-tree)
- Git integration (Gitsigns)
- UI enhancements (Lualine, Bufferline, Alpha)
- And many more plugins
If you see any errors during the initial installation, try closing and reopening Neovim. The
plugins.lua file is configured to automatically sync Packer whenever you save it.Restart Neovim
After the initial plugin installation completes, close and reopen Neovim:On this second launch, you’ll notice Treesitter pulling in language parsers. This is normal and expected behavior.
Install Language Servers with Mason
Mason is used to install and manage LSP servers, formatters, and linters. To open Mason:The configuration automatically installs these language servers:To see all available servers and tools:
lua_ls- Lua language serverpyright- Python language serverjsonls- JSON language server
Mason will automatically install these servers on first launch. You can install additional servers through the Mason UI using the
i key when hovering over a server name.- Press
ito install - Press
Xto uninstall - Press
uto update - Press
g?for help
Verifying Your Installation
After installation, verify everything is working correctly:Check Plugin Status
Run the Packer status command:Check LSP Servers
Verify Mason has installed the language servers:Test Key Bindings
Try some basic keybindings to ensure everything is working:- Press
<Space>(the leader key) - You should see WhichKey popup showing available commands - Press
<Space>fto see file-related commands - Press
<Space>ffto open Telescope file finder - Press
<Space>eto toggle the file explorer (nvim-tree)
Configuration Files
The configuration is automatically loaded through the main entry point:init.lua
require statement loads a specific module from the lua/user/ directory. This modular approach makes it easy to understand and customize each aspect of the configuration.
Updating the Configuration
To update Neovim from Scratch to the latest version:Troubleshooting
Plugins Fail to Install
If plugins fail to install:- Check your internet connection
- Remove the Packer installation and try again:
- Reopen Neovim to trigger automatic reinstallation
LSP Not Working
If language servers aren’t working:- Open Mason and ensure servers are installed:
:Mason - Check LSP status:
:LspInfo - Verify Mason installation path has correct permissions
- Try manually installing a server:
:MasonInstall lua_ls
Treesitter Errors
If you see Treesitter errors:- Update Treesitter parsers:
:TSUpdate - Check installed parsers:
:TSInstallInfo - Ensure you have a C compiler installed (required for Treesitter)
Configuration Not Loading
If your configuration isn’t loading:- Verify the installation path:
~/.config/nvimshould containinit.lua - Check for syntax errors:
nvim --headless +"lua print('Config OK')" +q - Look for errors in
:messages
Next Steps
Now that you have Neovim from Scratch installed, you should:- Complete the Prerequisites checks to ensure full functionality
- Explore the Key Mappings to learn the most important shortcuts
- Understand the Configuration to customize your setup
- Learn about Plugin Management to add or remove plugins

