Skip to content

VonHeikemen/lazy-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Lazy Template

Base configuration for Neovim. For those looking to make Neovim their new main editor. Here you'll find a popular combination of plugin to make your experience a little bit better.

A few things have been configured to resemble other modern text editors. You'll find a file explorer with tree style view, list open files in tabs, git integration and a terminal easy to toggle.

Autocompletion and "code intellisense" is provided by the LSP client built into Neovim. This means if you want smart completion and error detection for a programming language you'll need to install a language server.

Requirements

  • Neovim v0.9 or greater.
  • git.
  • A C compiler. Can be gcc, tcc or zig.
  • make, the build tool.
  • (optional) A patched font to display icons. I hear nerdfonts has a good collection.
  • (optional) ripgrep. Improves project wide search speed.
  • (optional) fd. Improves file search speed.

Note for windows users

If you need a C compiler then zig is the easiest to install. It's available on winget, scoop and chocolatey. You can also find some links in the zig download page.

If you experience performance issues with the plugin Telescope then you might want to try an alternative like fzf.lua.

Installation

  • Clone this repository in Neovim's configuration folder.

    If you don't know the location of that folder, use this command in your terminal.

    nvim --headless -c 'echo stdpath("config") | echo "" | quit'
  • After you cloned the repository in Neovim's folder, start Neovim using this command in your terminal.

    nvim

    The plugin manager will be installed automatically. And then all the plugins will be installed.

About language servers

They are external programs that provide IDE-like features to Neovim. If you want to know more about language servers watch this wonderful 5 minutes video: LSP explained.

In this configuration there is a plugin that will help you install language servers: mason-lspconfig. If you execute the command :LspInstall while you are inside a file then mason-lspconfig will suggest a list of language servers that support that particular type of file.

Keep in mind you need to meet the requirements of the language servers. For example, if you want to download the language server for the go programming language then you need to have go installed in your system. If you want to download a language server written in javascript you'll need NodeJS.

Learn more about the plugin manager

lazy.nvim is the plugin manager used in this configuration. Here are a few resources that will help you understand some of it's features:

Keybindings

Leader key: Space.

Mode Key Action
Normal <leader>h Go to first non empty character in line.
Normal <leader>l Go to last non empty character in line.
Normal <leader>a Select all text.
Normal gy Copy selected text to clipboard.
Normal gp Paste clipboard content.
Normal <leader>w Save file.
Normal <leader>bq Close current buffer.
Normal <leader>bc Close current buffer while preserving the window layout.
Normal <leader>bl Go to last active buffer.
Normal <leader>? Search oldfiles history.
Normal <leader><space> Search open buffers.
Normal <leader>ff Find file in current working directory.
Normal <leader>fg Search pattern in current working directory. Interactive "grep search".
Normal <leader>fd Search diagnostics in current file.
Normal <leader>fs Search pattern in current file.
Normal <leader>e Open file explorer.
Normal <Ctrl-g> Toggle the builtin terminal.
Normal K Displays hover information about the symbol under the cursor.
Normal gd Jump to the definition.
Normal gD Jump to declaration.
Normal gi Lists all the implementations for the symbol under the cursor.
Normal go Jumps to the definition of the type symbol
Normal gr Lists all the references.
Normal gs Displays a function's signature information.
Normal <F2> Renames all references to the symbol under the cursor.
Normal <F3> Format code in current buffer.
Normal <F4> Selects a code action available at the current cursor position.
Normal gl Show diagnostics in a floating window.
Normal [d Move to the previous diagnostic.
Normal ]d Move to the next diagnostic.

Autocomplete keybindings

Mode Key Action
Insert <Up> Move to previous item.
Insert <Down> Move to next item.
Insert <Ctrl-p> Move to previous item.
Insert <Ctrl-n> Move to next item.
Insert <Ctrl-u> Scroll up in documentation window.
Insert <Ctrl-d> Scroll down in documentation window.
Insert <Ctrl-e> Cancel completion.
Insert <C-y> Confirm completion.
Insert <Enter> Confirm completion.
Insert <Ctrl-f> Go to next placeholder in snippet.
Insert <Ctrl-b> Go to previous placeholder in snippet.
Insert <Tab> If completion menu is open, go to next item. Else, open completion menu.
Insert <Shift-Tab> If completion menu is open, go to previous item.

Plugin list

Name Description
lazy.nvim Plugin manager.
tokyonight.nvim Collection of colorscheme for Neovim.
nvim-web-devicons Helper functions to show icons.
lualine.nvim Pretty statusline.
bufferline.nvim Pretty tabline.
indent-blankline.nvim Shows indent guides in current file.
neo-tree File explorer.
mini.nvim Collection of independent lua modules that enhance Neovim's features.
telescope.nvim Fuzzy finder.
telescope-fzf-native.nvim Allows fzf-like syntax in telescope. Note: only enabled in unix systems.
gitsigns.nvim Shows indicators in gutter based on file changes detected by git.
vim-fugitive Git integration into Neovim/Vim.
nvim-treesitter Configures treesitter parsers. Provides modules to manipulate code.
nvim-treesitter-textobjects Creates textobjects based on treesitter queries.
vim-repeat Add "repeat" support for plugins.
plenary.nvim Collection of modules. Used internaly by other plugins.
nui.nvim UI Component Library for Neovim.
dressing.nvim Improve the default vim.ui interfaces.
toggleterm.nvim Manage terminal windows easily.
mason.nvim Portable package manager for Neovim.
mason-lspconfig.nvim Integrates nvim-lspconfig and mason.nvim.
nvim-lspconfig Quickstart configs for Neovim's LSP client.
nvim-cmp Autocompletion engine.
cmp-buffer nvim-cmp source. Suggest words in the current buffer.
cmp-path nvim-cmp source. Show suggestions based on file system paths.
cmp_luasnip nvim-cmp source. Show suggestions based on installed snippets.
cmp-nvim-lsp nvim-cmp source. Show suggestions based on LSP servers queries.
LuaSnip Snippet engine.
friendly-snippets Collection of snippets.
nvim-ts-context-commentstring It helps detect comment syntax.

About

An example of how you can use lazy.nvim to split your configuration in modules.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages