You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Neovim Config
This is a vim-plug based Neovim config with:
- LSP via
nvim-lspconfig
- Completion via
nvim-cmp and LuaSnip
- Search via Telescope
- File browsing via Oil
- LaTeX workflow via VimTeX and TexLab
- Formatting via LSP,
latexindent, and neoformat fallback
Main Files
init.vim: plugin list and Vimscript globals
lua/init.lua: Lua setup, keymaps, completion, LSP, and plugin config
Plugin Manager
This config uses vim-plug.
Common commands:
:PlugInstall
:PlugUpdate
:PlugClean
Required External Software
LSP Servers
These are the language servers configured in lua/init.lua and the binaries they expect to find on PATH.
| LSP config |
Expected binary or package |
ts_ls |
typescript-language-server and typescript |
clangd |
clangd |
gopls |
gopls |
pyright |
pyright |
texlab |
texlab |
rust_analyzer |
rust-analyzer |
kotlin-language-server |
kotlin-language-server |
cmake |
cmake-language-server |
html |
vscode-html-language-server from vscode-langservers-extracted |
glsl_analyzer |
glsl_analyzer |
lua_ls |
lua-language-server |
zls |
zls |
LaTeX Toolchain
These are used by the current LaTeX setup.
| Tool |
Purpose |
pdflatex |
TeX engine |
latexmk |
Project-aware TeX build runner |
latexindent |
TeX formatter |
texlab |
LaTeX LSP |
zathura |
Optional PDF viewer with SyncTeX support |
xdg-open |
Generic PDF opener fallback |
Other Useful Runtime Tools
| Tool |
Purpose |
cargo |
Used here to install texlab |
git |
Required by vim-plug and Telescope git search |
Leaders
Leader = <Space>
LocalLeader = ,
Key Shortcuts
Search And Buffers
| Mode |
Shortcut |
Action |
| Normal |
<C-p> |
Search tracked git files |
| Normal |
<C-f> |
Search all files |
| Normal |
<leader>f |
Grep the project |
| Normal |
<leader>/ |
Fuzzy search the current buffer |
| Normal |
<leader>fh |
Search help tags |
| Normal |
<leader>fr |
Open recent files |
| Normal |
<leader>fu |
Open undo history in Telescope |
| Normal |
<leader><Tab> |
Switch buffers |
File Browsing
| Mode |
Shortcut |
Action |
| Normal |
- |
Open parent directory in Oil |
| Normal |
<leader>e |
Open Oil file explorer |
| Normal |
<leader>E |
Open the current file's directory in Oil |
LSP And Diagnostics
| Mode |
Shortcut |
Action |
| Normal |
gd |
Go to definition |
| Normal |
gr |
List references |
| Normal |
gi |
List implementations |
| Normal |
K |
Show hover documentation |
| Normal |
L |
Show diagnostics in a float |
| Normal, Visual |
<leader>ca |
Run a code action |
| Normal |
<leader>rn |
Rename symbol |
| Normal |
[d |
Jump to previous diagnostic |
| Normal |
]d |
Jump to next diagnostic |
| Normal |
<leader>q |
Send diagnostics to the location list |
| Normal |
<leader>fm |
Format the current buffer |
LaTeX Workflow
| Mode |
Shortcut |
Action |
| Normal |
<leader>tc |
Compile TeX document |
| Normal |
<leader>tk |
Stop TeX compilation |
| Normal |
<leader>tv |
Open or refresh TeX PDF viewer |
| Normal |
<leader>to |
Show TeX compiler output |
| Normal |
<leader>tt |
Toggle TeX table of contents |
| Normal |
<leader>te |
Show TeX errors |
| Normal |
<leader>tl |
Clean TeX build files |
Editing And Movement
| Mode |
Shortcut |
Action |
| Normal, Visual |
<leader>y |
Yank to system clipboard |
| Normal |
<leader>u |
Toggle Undotree |
| Normal, Visual, Operator-pending |
s |
Jump with Flash |
| Normal, Visual, Operator-pending |
S |
Jump to Tree-sitter targets with Flash |
Completion
Insert Mode
| Shortcut |
Action |
<C-b> |
Scroll completion documentation up |
<C-f> |
Scroll completion documentation down |
<C-Space> |
Open completion menu |
<C-e> |
Abort completion |
<Tab> |
Confirm selected completion item |
Command Line And Search
| Mode |
Shortcut |
Action |
/ command line |
<Tab> and completion menu |
Complete from current buffer |
: command line |
<Tab> and completion menu |
Complete paths and commands |
Plugin Defaults Still Enabled
| Mode |
Shortcut |
Action |
| Normal |
gcc |
Toggle comment on current line |
| Visual |
gc |
Toggle comment on selection |
| Operator-pending |
gc{motion} |
Toggle comment over a motion |
vim-surround
| Mode |
Shortcut |
Action |
| Normal |
ys{motion}{char} |
Add surrounding characters |
| Normal |
yss{char} |
Surround current line |
| Normal |
cs{old}{new} |
Change surrounding characters |
| Normal |
ds{char} |
Delete surrounding characters |
| Visual |
S{char} |
Surround the selection |
VimTeX Common Defaults
| Mode |
Shortcut |
Action |
| Normal |
<localleader>ll |
Start or toggle VimTeX compilation |
| Normal |
<localleader>lk |
Stop VimTeX compilation |
| Normal |
<localleader>lc |
Clean auxiliary files |
| Normal |
<localleader>lv |
Open or forward-search the PDF |
| Normal |
<localleader>lo |
Open compiler output |
| Normal |
<localleader>lt |
Open VimTeX table of contents |
| Normal |
[[ / ]] |
Move between section boundaries |
| Normal |
[m / ]m |
Move between environment boundaries |
| Visual, Operator-pending |
ie / ae |
Select inside or around a LaTeX environment |
| Visual, Operator-pending |
i$ / a$ |
Select inside or around math |
Notes
- TeX formatting uses
latexindent when editing *.tex files.
- The generic format key is still
<leader>fm; it switches to latexindent automatically for TeX buffers.
vimtex provides many more text objects, motions, and local mappings than listed here. Use :help vimtex-default-mappings and :help vimtex for the full set.