nathanl / nvim-from-scratch

πŸ› οΈ Ready to use starting point for your new Neovim configuration

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Neovim from Scratch

Screenshot of Neovim using this config, running in the kiity terminal emulator

This is a starter Neovim configuration meant to act as a jumping-off point for new Neovim users or those who have declared config bankruptcy.

Why?

Neovim is a fantastic source code editor out of the box, but with a little help can provide a truly feature-rich development environment that matches (or exceeds) alternative offerings.

The leg work involved in going from a blank init.lua to a useful daily driver can be intimidating. This repo provides a handy starting point so that you can begin using Neovim right away while building your own Personalized Development Environment.

Getting started

Clone the project into your $XDG_CONFIG_HOME directory (usually ~/.config) as nvim:

git clone https://github.com/ngscheurich/nvim-from-scratch ~/.config/nvim

The next time you launch Neovim, the configuration will be applied and the plugin manager should start doing its thing.

Requirements

This config has only been tested with Neovim 0.8.2 and higher.

You’ll also need to have fd and ripgrep; these help improve the fuzzy finding experience. Homebrew users can install these with:

brew install ripgrep fd

What’s included

The core Neovim experience is configured with sensible settings and examples of key mappings, autocommands, and abbreviations are included.

Additionally, a handful of plugins are configured to augment the user interface, tap into powerful features like the native LSP client and tree-sitter integration, and extend Neovim’s already powerful text editing capabilities.

Files are organized in a way that makes things succinct and easy to find:

~/.config/nvim
β”œβ”€β”€ init.lua
└── lua
    β”œβ”€β”€ config
    β”‚   β”œβ”€β”€ abbrevs.lua
    β”‚   β”œβ”€β”€ commands.lua
    β”‚   β”œβ”€β”€ keymaps.lua
    β”‚   └── options.lua
    └── plugins
        β”œβ”€β”€ init.lua
        └── ...

Plugins

lazy.nvim is used for plugin management. You can learn more about the plugin manager and configuration options with :h lazy.nvim.

Editing

Plugins for more effortless text editing.

Interface

Plugins that extend or improve the Neovim terminal user interface (TUI).

Navigation

Plugins for efficiently moving through and between files.

Syntax

Plugins that help Neovim understand different programming languages.

Code Intelligence

Plugins that enable a rich source code editing experience.

Completion and Snippets

Plugins that save time and provide intelligent insert mode completion.

Source Control

Plugins that integrate with source sontrol systems.

Miscellaneous

Plugins that don't neatly fit into any other category.

What next?

This is meant to be a starting point! Once you’re comfortable, here are some ways you might start making it your own:

And of course, don’t be afraid to explore the Neovim plugin ecosystem!

Development

A Dockerfile is included to simplify manually testing changes. Build the Docker image with make build.

Now running make will drop you into a Debian container with the latest stable nvim available. Any changes made to the config files will be reflected in the container.

See also

  • Folke Lemaitre’s well-organized and thorough dotfiles were heavily referenced, and lots of his plugins are included. Thanks, Folke!
  • Kickstart.nvim is another great starting point for your configuration.
  • The name of this project was inspired by Emacs from Scratch.

About

πŸ› οΈ Ready to use starting point for your new Neovim configuration

License:MIT License


Languages

Language:Lua 93.6%Language:Dockerfile 5.5%Language:Makefile 0.9%