Skip to content

Latest commit

 

History

55 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NVim Config

preview

Requirements

System

  • Neovim (v0.11+; v0.12 supported)
  • ripgrep - FzfLua live grep
  • fd - (Optional) faster file finding for FzfLua
  • nerd-fonts - icons
  • tree-sitter-cli - compiles parsers for nvim-treesitter main branch: brew install tree-sitter-cli
  • Rust toolchain (rustup / cargo) - required to build blink.cmp's Rust fuzzy matcher on first install
  • git, make, C compiler - required by Mason and various plugin builds

Language Servers, Formatters, Linters

Auto-installed via Mason on first launch. Manually managed via :Mason.

  • LSPs: ts_ls, pyright, gopls, lua_ls, html, cssls
  • Formatters (via conform): prettier/prettierd, black, isort, stylua, gofmt, goimports, shfmt
  • Linters (via nvim-lint): eslint_d, flake8, mypy, golangcilint, shellcheck, markdownlint, yamllint, jsonlint

Plugin Manager

This configuration uses lazy.nvim as the plugin manager. Lazy.nvim will be automatically installed on first startup.

Installation

  1. Clone this repository with submodules (or run git submodule update --init after a plain clone):
git clone --recurse-submodules <repo-url>
  1. Build the bundled Strudel language server (requires Node >= 18 and pnpm):
pnpm install --dir lsp/str-ls && pnpm --dir lsp/str-ls build
  1. Link the init.lua and lua directory to the Neovim configuration directory, usually ~/.config/nvim.
ln -s $PWD/init.lua ~/.config/nvim/init.lua
ln -s $PWD/lua ~/.config/nvim/lua
  1. Start Neovim - lazy.nvim will automatically bootstrap and install all plugins.
  2. Optionally run :Lazy to open the plugin manager interface.

Keybindings

Keybinding Description
[n] <leader> \
[n] <leader>ff FzfLua find files
[n] <leader>fg FzfLua live grep
[n] <leader>fb FzfLua buffers
[v] <C-f> FzfLua live grep selection
[n] <C-r> FzfLua resume
[n] <C-,> Buffer previous
[n] <C-.> Buffer next
[n] <C-p> Buffer pick
[n] <C-e> NvimTree toggle
[n] <leader>nf NvimTree find file
[n] <leader>nc NvimTree collapse
[n] <leader>p Format with conform.nvim
[n] <leader>e Open diagnostics float
[n] <leader>ih Toggle LSP inlay hints
[n] <leader>xx Trouble diagnostics toggle
[n] <leader>xX Trouble diagnostics toggle (current buf)
[n] <leader>zR UFO Open all folds
[n] <leader>zM UFO Close all folds
[n] <leader>sl Launch Strudel
[n] <leader>sq Quit Strudel
[n] <leader>st Toggle Strudel playback
[n] <leader>su Evaluate Strudel buffer
[n] <leader>ss Stop Strudel playback
[n] <leader>sb Sync current buffer with Strudel
[n] <leader>sx Sync and evaluate Strudel buffer

LSP (Language Server Protocol)

This configuration uses Mason for automatic LSP server management. Configured language servers include:

  • TypeScript/JavaScript: ts_ls (formerly tsserver)
  • Python: pyright
  • Go: gopls
  • Lua: lua_ls
  • HTML: html
  • Strudel: str-ls - bundled as the lsp/str-ls git submodule, attaches to the custom strudel filetype

LSP servers are automatically installed and configured through Mason. For more server configurations, see the nvim-lspconfig documentation.

Plugins

Core

UI & Themes

Navigation

  • fzf-lua - Fast and powerful file finder and grep

LSP & Completion

Git Integration

Language & Syntax

Strudel live coding

strudel.nvim is bundled and configured for a side-by-side live-coding workflow: Neovim is the only code editor, while a visible Strudel browser window provides playback controls, error display, and visuals. It requires Node.js >= 16, npm, and a Chromium-based browser (this machine has Node v24.18.1, npm 11.16.0, and Google Chrome installed).

Opening a .str, .std, or .strudel file assigns the custom strudel filetype. The bundled str-ls language server (git submodule at lsp/str-ls, built to lsp/str-ls/dist/server.js) attaches automatically and provides Strudel API hover documentation and mini-notation completion. Tree-sitter highlighting uses the existing javascript parser via vim.treesitter.language.register.

Workflow:

  1. Write or open a .str buffer and save it.
  2. Run \\sl to launch Strudel in a visible browser window and begin playback.
  3. While playing, use \\su or save the buffer to evaluate edits.
  4. Use \\sx after switching to another buffer to sync and evaluate it.
  5. Use \\st, \\ss, and \\sq for toggle, stop, and quit.

Utilities

Configuration Structure

nvim-config/
├── init.lua              # Entry point, bootstraps lazy.nvim and loads modules
├── lua/
│   ├── globals.lua       # Global variables and aliases
│   ├── settings.lua      # Neovim settings and options
│   ├── keybindings.lua   # Custom keybindings
│   ├── plugins.lua       # Plugin definitions with lazy.nvim
│   └── configs/          # Individual plugin configurations
│       ├── blink.lua
│       ├── conform.lua
│       ├── dashboard-nvim.lua
│       ├── lazy.lua
│       ├── lsp.lua
│       ├── lualine.lua
│       ├── mason-nvim-lint.lua
│       ├── neoscroll.lua
│       ├── nvim-lint.lua
│       ├── nvim-tree.lua
│       ├── nvim-treesitter.lua
│       ├── statuscol.lua
│       └── ufo.lua
└── assets/
    └── preview.png

Recommended Terminal

WezTerm with Tokyo Night Moon color scheme:

config.color_scheme = 'Tokyo Night Moon'

For more information, see the WezTerm configuration documentation.

About

NVim config and setup shell

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages