Skip to content

pauldesmondparker/nvim-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Neovim Starter

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. The following language servers are configured:

  • tsserver
  • eslint
  • cssls
  • html

Most of the code in this configuration is explained in this series:

Requirements

  • Neovim v0.8 or greater.
  • git.
  • A C compiler. Can be gcc, tcc or zig.
  • make, the build tool.
  • npm cli. Javascript package manager.
  • nodejs. Javascript runtime. Required by the language servers listed above.
  • (optional) ripgrep. Improves project wide search speed.
  • (optional) fd. Improves file search speed.
  • (optional) A patched font to display icons. I hear nerdfonts has a good collection.

Here's the config compatible with v0.7.

Installation

  • Backup your existing configuration if you have one.

  • If you don't know the path of the Neovim configuration folder use this command.

nvim --headless -c 'echo stdpath("config") | quit'
  • Now clone this repository in that location.
git clone https://github.com/VonHeikemen/nvim-starter /tmp/nvim-config-path

Do not execute this command as is. Replace /tmp/nvim-config-path with the correct path from the previous step.

  • Move to the configuration folder where you clone the repository. Change branch to 05-modular.
git checkout 05-modular
  • Next time you start Neovim all plugins will be downloaded automatically. After this process is done nvim-treesitter will install language parsers for treesitter. And, mason.nvim will download language servers listed in the configuration. Use the command :Mason to check the download process of language servers.

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.
Visual <F4> Selects a code action available in the selected text.
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.
onedark.vim Colorscheme based on Atom's default theme.
monokai.nvim Colorscheme based on Sublime text's default theme.
darkplus.nvim Colorscheme based on VS Code's default theme.
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.
nvim-tree.lua File explorer.
telescope.nvim Fuzzy finder.
telescope-fzf-native.nvim Extension for telescope. Allows fzf-like syntax in searches.
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.
Comment.nvim Toggle comments.
vim-surround Add, remove, change "surroundings".
targets.vim Creates new textobjects.
vim-repeat Add "repeat" support for plugins.
vim-bbye Close buffers without closing the current window.
plenary.nvim Collection of modules. Used internaly by other plugins.
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.

######################################################################################## ######################################################################################## ######################################################################################## ########################################################################################

Neovim Configuration

Warning Current issues.

  • auto-pairs not working as expected

Tooling

Lazy Plugin Manager

Colorscheme

Note Apprentice. A autocmd on colorscheme matching pattern "apprentice" makes the background transparent.

Status Line

Note Using Lightline. Overloading colorscheme with local custom powerline_transparent.

Warning Lightline is currently patch locally to allow the config to call lua functions. itchyny/lightline.vim#657

LSP

Note Using coc.nvim for now. Planning to move to neovim native lsp handling in the future.

Leap

Note leap.vim for quick jumping to anywhere on the visible page.

Automatic Brackets

Note Not happy with jiangmiao/auto-pairs as yet, but it may be that I need to configure it.

Cursor Highlight

Note I've always done this with snippets, but currently using vim-illuminate

Highlight Yank

Note HighlightYank

Copilot

Block Highlighting

Note hlchunk is nice. Have some custom colors in place to make it unobstrusive.

Others

  • nvim-treesitter
  • suda
  • vim-numbertoggle
  • gitgutter
  • gitbranch

About

Neovim Configuration

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages