Coder Social home page Coder Social logo

neovim-lua's Introduction

neovim-lua_logo

Neovim KISS configuration with Lua

Table of Contents

Plugins

packer.nvim - A use-package inspired plugin manager for Neovim

feline.nvim - A minimal, stylish and customizable statusline for Neovim written in Lua

nvim-lspconfig - A collection of common configurations for Neovim's built-in language server client

nvim-cmp - Auto completion plugin

LuaSnip - Snippet Engine for Neovim written in Lua

nvim-tree.lua - A File Explorer written In Lua

indentBlankline - Adds indentation guides to all lines (including empty lines)

nvim-autopairs - A super powerful autopairs for Neovim

Tagbar - A class outline viewer for Vim

gitsigns - Super fast git decorations implemented purely in lua/teal

nvim-treesitter - Nvim Treesitter configurations and abstraction layer

alpha-nvim - A fast and highly customizable greeter for neovim.

nvim-web-devicons - A Lua fork of vim-devicons

Directory Tree

${HOME}/.config/nvim

├── lua
│   ├── core
│   │   ├── autocmds.lua
│   │   ├── colors.lua
│   │   ├── keymaps.lua
│   │   ├── options.lua
│   │   └── statusline.lua
│   ├── plugins
│   │   ├── alpha-nvim.lua
│   │   ├── indent-blankline.lua
│   │   ├── nvim-cmp.lua
│   │   ├── nvim-lspconfig.lua
│   │   ├── nvim-tree.lua
│   │   └── nvim-treesitter.lua
│   └── packer_init.lua
├── plugin
│   └── packer_compiled.lua
└── init.lua

Files and Settings

/nvim

  • init.lua: Main configuration file that call lua modules

  • lua: Folder of lua modules, here reside all the Lua modules that needed. These modules are called from init.lua file (see below).

See: https://github.com/nanotee/nvim-lua-guide#where-to-put-lua-files

/nvim/lua

/nvim/lua/core

/nvim/lua/plugins

Installation

  1. Install Neovim v0.7.x.

  2. Install Nerd Fonts, (for the font of the screenshots install Cozette Font).

  3. Install npm for download packages of LSP language servers, see: LSP Configuration.

  4. Make a backup of your current nvim folder if necessary:

mv ~/.config/nvim ~/.config/nvim.backup
  1. Download neovim-lua with git and copy the nvim folder in the ${HOME}/.config directory:
git clone https://github.com/brainfucksec/neovim-lua.git
cd neovim-lua/
cp -Rv nvim ~/.config/
  1. Install packer.nvim for install and manage the plugins:
git clone --depth 1 https://github.com/wbthomason/packer.nvim\
 ~/.local/share/nvim/site/pack/packer/start/packer.nvim
  1. Run Neovim with PackerSync command:
nvim +PackerSync

LSP Configuration

  1. Install LSP language servers with npm
sudo npm install -g bash-language-server pyright vscode-langservers-extracted typescript typescript-language-server
  1. Install additional packages for plugins support:

C, C++:

Python:

  1. Open a source file of one of the supported languages with Neovim, and run command :LspInfo for testing the LSP support.

Languages Currently Supported

Lua - builtin

Bash - bashls

Python - pyright

C, C++ - clangd

HTML, CSS, JSON - vscode-html

JavaScript, TypeScript - tsserver

See: nvim-lspconfig #doc/server_configurations.md

Appearance

Available Colorschemes

Fonts: Cozette

Icons: nvim-web-devicons

The color scheme is defined in the following files (default: OneDark):

-- Load nvim color scheme:
...color_scheme = pcall(require, 'onedark')
require('onedark').setup {
    style = 'darker'
}
require('onedark').load()
-- Set colorscheme (from core/colors.lua/colorscheme_name)
local colors = require('core/colors').onedark_dark

Configuration check

  • Open nvim and run command checkhealth, you should not see any error in the output (except for the one related to the Python 2 interpreter if don't have it):
:checkhealth

alt text

  • You can also use the startuptime option to read the nvim startup logs:
nvim --startuptime > /tmp/nvim-start.log

nvim /tmp/nvim-start.log

See: :help startuptime

Screenshots

(Click to expand)

OneDark (darker)

onedark_1

onedark_2

Monokai

monokai_1

monokai_2

Rosé Pine

rose-pine_1

rose-pine_2

Guides and resources

Other Neovim Lua projects and examples

Lua resources

Disclaimer

As all my setups I try to follow the KISS principle, probably some concepts may not be valid for everyone. Then feel free to take what you need but don't install anything without checking first!


Thanks to all the authors of the sources mentioned above, to all the others from whom I "stole" some configs and thanks to the users of /r/Neovim subreddit for the support of the configuration :)

neovim-lua's People

Contributors

brainfucksec avatar iamhemanthm avatar rainerkuemmerle avatar williamboman avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.