Skip to content

Fury1/neovim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Neovim Config

Some setup notes about my config for my future self and any travelers.

Languages, LSPs, & Formatters

  • LSPs are configured in the /lsp directory as they should be in Neovim 0.11+
  • The LSP servers and formatters are installed as OS packages

Codebook LSP Spell Checker

I prefer the Codebook LSP for spell checking code. Spell checkers in general don't understand coding conventions, this spell checker does taking language syntax into consideration before making a suggestion.

  • codebook
  • Disable Neovim spell check when in use, otherwise default back to Neovim's builtin spell check. See options.lua for the auto command snippet.

Markdown

Markdown linting, completions, goto definition, references, renames, diagnostics, and more.

  • marksman

Formatting Popular File Types

Dprint can format various common file types for consistency using it's plugin system.

  • dprint
    • typescript
    • json
    • markdown
    • toml
    • dockerfile
    • jupyter
    • markup (HTML, Vue, Svelte, Astro, XML, etc)
    • YAML

Note: Plugins should be installed with a global config (dprint init --global), and optionally a per project override config.

Lua

I only really use this for Neovim configuration, basic LSP with a lua style formatter.

  • lua_ls
  • stylua

Python

Python requires multiple LSPs for different things. ruff is primarily used for formatting/linting and basedpyright is used for type checking, completions, go to definition, etc (everything else).

  • basedpyright
  • Ruff (documentation hover is disabled in favor of basedpyright)

Rust

Rustup manages the Rust toolchain. Once Rustup is installed, its relevant components are added to Neovim.

  • rustup
    • rust-analyzer
      • clippy (swapped for 'cargo check')
    • rustfmt

Docker

LSP for Docker that provides some nice features for the ecosystem.

  • docker-language-server

Note: The Docker Language Server relies on some features that are dependent on Buildx. If Buildx is not available as a Docker CLI plugin then those features will not be available.

YAML

Schema validation from the JSON Schema Store. This works well with things like Docker Compose.

  • yaml-language-server

Plugins

lazy.nvim is being used to manage plugins (not to be confused with Lazy.nvim).

Themes

Some of my favorite themes that don't bother my eyes.

  • Kanso
  • Vague (Customized)

Viewing Markdown Files

Markdown Preview is being used to render markdown in a Github like format.

  • Markdown Preview (requires yarn to build, browser based preview)
  • Markview (inline terminal based preview)

Completions

Blink is being used to power completions via LSPs/snippets. I chose this over nvim-cmp because it is much easier to setup and works well enough.

  • Blink

Formatting

Conform is used with my formatters for keymap consistency.

  • Conform

Language Parsers

Treesitter is being used for highlighting, indentation, and incremental selection.

Neovim smartindent is disabled when using this.

  • Treesitter
  • TODO: Treesitter text objects to jump between functions and such.

Fuzzy Finder

Snacks picker is being used to fuzzy find over buffer, files, grep, diagnostics, etc.

  • Snacks Picker

Code Action Menu

I like a customizable inline LSP code action popup.

  • Tiny code action (disabled)
  • Snacks Picker

Jump Navigation

Jump to to a location in view directly.

  • Flash

Surrounds

Manipulate matching character pairs easily.

  • Nvim Surround

Git Integration

Gitsigns is being used to work with hunks in the buffer as well as mark changes, Neogit is used for everything else.

  • Git signs
  • Neogit
  • Diffview

TODO Highlight

  • Todo comments

Scratch Buffers & Center windows

Center windows while gaining some scratch buffers. I use the scratch buffers similarly to the Jetbrains scratch file feature.

  • No Neck Pain

File Exploration

Explore and modify file trees quickly.

  • Snacks Explorer
  • Oil Nvim

LazyDev

Configure the lua-ls language server for editing Neovim configuration (configures the lsp for the Neovim environment quick and easily).

  • LazyDev

Buffer Management

Switch around bookmarked buffers easily.

  • Arrow buffer manager

About

My Neovim config for all!

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages