A clean little vim plugin that scans the active file and lists every variable in a seperate panel.
- Display Scope: Line numbers variables occur
- Features: Jump, cycle, filter, rename, and supports 40+ languages currently.
- Python — full AST parser, rich context (
global,local,param,loop,comp,except) - Everything else — Universal Ctags, covering C, C++, Go, Rust, Java, JavaScript, TypeScript, Ruby, PHP, Kotlin, R, Julia, SQL, Bash, and more
- [vim] (obviously)
- [Python 3.8+]
- Universal Ctags (for non-Python files)
brew install universal-ctags # macOS
sudo apt install universal-ctags # Debian / Ubuntu
sudo dnf install ctags # FedoraManual
mv -r /sigil ~/.vim/bundle/sigilset runtimepath+=~/.vim/bundle/sigilUpdate anytime with :PlugUpdate sigil.
let g:sigil_height = 15 " panel height (default: 12)
let g:sigil_python = 'python3'| Key / Command | Action |
|---|---|
<leader>s |
Open / refresh panel |
<leader>n |
Next occurrence of word under cursor |
<leader>p |
Previous occurrence |
<leader>r |
Rename word under cursor |
:Sigil |
Open panel |
| `:SigilX | Close panel |
:SigilR |
Rename under cursor |
Inside the panel:
| Key | Action |
|---|---|
Enter |
Jump to first occurrence, close panel |
o |
Jump, keep panel open |
n / p |
Cycle occurrences |
r |
Rename selected variable |
/ |
Filter |
Esc |
Clear filter |
q |
Close |
If you share the belief that simplicity empowers creativity, feel free to contribute.
- Forking this repo
- Submitting a Pull Request
- Bug reports and feature requests Ensure your code follows the existing style.
This project started out as self-solving a specific need, and evolved into something I think could actually be useful. If you hit any issues, feel free to open one. Pull requests, suggestions, and fixes I don't have to make myself are welcome. Complaints go to /dev/null.

