My Neovim config. Work in progress.
Requires Neovim 0.12+.
macOS
- Clone the repo to your config file:
cd ~/.config
git clone https://github.com/lkurcak/nvimAlternatively clone to your preferred location and create a symlink:
ln -s "$(pwd)" ~/.config/nvim
- Install dependencies
brew install ripgrepLinux / WSL
- Clone the repo to your config file:
cd ~/.config
git clone https://github.com/lkurcak/nvimAlternatively clone to your preferred location and create a symlink:
ln -s "$(pwd)" ~/.config/nvim
- Install dependencies:
Windows
- Clone the repo to your config file:
Set-Location $env:LOCALAPPDATA
git clone https://github.com/lkurcak/nvimAlternatively clone to your preferred location and create a symlink:
New-Item -ItemType SymbolicLink -Path "$env:LOCALAPPDATA\nvim" -Target "$(Get-Location)"
- Install dependencies:
winget install git.git
winget install BurntSushi.ripgrep.MSVCGit is also required for plugin installation and Git integration. Make sure the git command is available in your PATH.
After installation, run :checkhealth config in Neovim to see which core and feature-specific dependencies are available.
Language servers and supporting tools
Install Rust with rustup, then add the language server and Clippy components:
rustup component add rust-analyzer clippyInstall the OCaml language server through opam:
opam install ocaml-lsp-serverInstall Go, then install gopls:
go install golang.org/x/tools/gopls@latestInstall the Deno runtime. It provides the deno language server used by this config.
Install the language server with npm:
npm install --global vscode-langservers-extractedInstall the Taplo language server with Cargo:
cargo install --features lsp --locked taplo-cliDownload the latest lua-language-server release, extract it, and add its bin directory to your PATH.
Install curl to send requests from .http and .rest files. For syntax highlighting and formatting, also install the tree-sitter CLI:
cargo install tree-sitter-cli| Key | Action |
|---|---|
s |
Press s followed by two characters to move to them.Never move with mouse or hjkl again! |
S |
Same as above but able to jump to other buffers |
Ctrl+z |
Undo |
Ctrl+y |
Redo |
Ctrl+s |
Save file |
Ctrl+S |
Save all |
Ctrl+p |
Open file (Follow with Ctrl+a to search all files) |
Ctrl+f |
Find text (Follow with Ctrl+a to search all files) |
Alt+f |
Format file |
Ctrl+r |
Rename |
Ctrl+a |
Code action |
K |
Show info |
| Key | Action |
|---|---|
gd |
Go to definition |
gD |
Go to declaration |
gi |
Go to implementation |
gr |
Find references |
Space+d |
Go to type definition |
[d |
Previous diagnostic |
]d |
Next diagnostic |
Press - to open oil file viewer. Create, rename, delete files like you would text. Save the buffer to confirm changes.
Press Ctrl+g or enter command :Git to open fugitive. Use = to expand files. Use - to stage/unstage files or parts of the code. Press cc to commit staged changes. Enter command :Git push to push commits.
Open a .http file to load kulala.nvim. Move the cursor over a HTTP request and press Enter to send it.
| Command | Action |
|---|---|
:FixLineEndings |
Converts line endings to unix style in buffer |
:FixLineEndingsRepo |
Converts line endings to unix for all tracked git repository files |
:Build [args...] |
Builds the current project in a reusable half-height bottom terminal (Rust: cargo build) |
:Run [args...] |
Runs the current project in a reusable half-height bottom terminal (Rust: cargo run) |
Project commands detect the nearest supported project manifest from the current file and run from that directory. Arguments are passed through to the underlying command; for example, use :Build --release or :Run --release -- first-argument in a Rust project.