Skip to content

Latest commit

 

History

History
98 lines (80 loc) · 3.96 KB

README.md

File metadata and controls

98 lines (80 loc) · 3.96 KB

Winston's Neovim configuration in Lua

Screenshots

screenshot colorscheme: dayfox

Introduction

My personal Neovim configuration, nothing special.

  • Modern: Using Lua as the config language, adopting as many fancy features as possible in the nightly version of Neovim.
  • Modular: Each plugin has its dedicated config file.
  • Documented (TODO): The goal is to easily recall what this line/file does.

Neovim >= 0.10 is required

Installation

Backup your existing config with mv ~/.config/nvim{,.bak} Run git clone https://github.com/ZWindL/VVimston.git ~/.config/nvim

File Structure

 .
├──  init.lua                  # main config
├──  lua
│  ├──  core                   # core configurations don't rely on plugins
│  │  ├──  autocmds.lua
│  │  ├──  constants.lua       # icons, colors, etc
│  │  ├──  keymaps.lua         # global keymaps
│  │  ├──  lazy_n_hotpot.lua   # package managers
│  │  ├──  neovide_options.lua # neovide specific options
│  │  ├──  options.lua         # global options
│  │  └──  utils.lua           # common utils like `map`, `map_group`
│  ├──  plugins                # plugin configurations
│  │  ├──  barbar.lua          # in general, each plugin has its own config
│  │  ├──  which-key.lua
│  │  ├── ...
│  │  ├──  dap                 # configurations for debugging
│  │  │  └── ...
│  │  ├──  hydra               # hydra configurations
│  │  │  └── ...
│  │  ├──  lang                # language specific plugins
│  │  │  └── ...
│  │  ├──  lsp                 # language server protocol
│  │  │  ├──  lang_settings    # language server settings for different languages
│  │  │  │  └── ...
│  │  │  ├──  init.lua
│  │  │  ├──  lsp.lua          # language server configuration for lsp itself
│  │  │  └── ...
│  │  └──  treesitter          # treesitter configurations
│  │     └── ...
│  ├──  theme.lua
│  └──  themes
│     └── ...
└──  templates                 # templates for templates.nvim plugin
   └──  lua
      └──  config.lua

Features

Themes

UI Enhancement

Tools

  • Auto remove incsearch highlight: hlsearch

Dev tools

Lsp related tools

Other useful tools

Dependencies

fswatch for better performance while watching files. ttf-nerd-fonts-symbols for symbols.

Known issues

vim.opt.formatoptions

I want nvim not to auto-insert comment lead characters after pressing o or O, but does after hitting enter. This can be configured via vim.opt.formatoptions, however it won't set "r" by operating directly on this option as vim.opt.formatoptions += "r", because options are table type. And if modify it by using vim.opt.formatoptions:append { "c", "q", "j", "r" } inside autoCmd blocks, nvim reports "illegal character" error. The workaround is to hardcode the value of formatoptions and remove the unwanted options by formatoptions:remove insideautoCmd, although it's not recommended, see :help formatoptions.

noice cmdline popup window resets certain options

Some options like custom icons for diagnosis will be reset to default after invoking noice cmdline popup window.

Inspiration