https://github.com/jkeresman01/active-files.nvim
A Neovim plugin that brings JetBrains-style Switcher or Visual Studio’s Active Files navigation to your workflow
https://github.com/jkeresman01/active-files.nvim
active-files jetbrains lua neovim nvim nvim-plugin nvim-plugins open-file open-files plugin switcher switcher-plugin vim vim-plugin visual-studio
Last synced: 9 months ago
JSON representation
A Neovim plugin that brings JetBrains-style Switcher or Visual Studio’s Active Files navigation to your workflow
- Host: GitHub
- URL: https://github.com/jkeresman01/active-files.nvim
- Owner: jkeresman01
- License: gpl-3.0
- Created: 2025-03-20T07:07:16.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-19T20:57:45.000Z (9 months ago)
- Last Synced: 2025-06-19T21:34:28.473Z (9 months ago)
- Topics: active-files, jetbrains, lua, neovim, nvim, nvim-plugin, nvim-plugins, open-file, open-files, plugin, switcher, switcher-plugin, vim, vim-plugin, visual-studio
- Language: Lua
- Homepage:
- Size: 34.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
active-files.nvim
Neovim plugin that allows switching between recently used files — similar to Switcher in JetBrains or Active Files in Visual Studio.
[](http://www.lua.org)
[](https://neovim.io)

## Table of Contents
- [The problem](#problem)
- [The solution](#solution)
- [Repository structure](#repo)
- [Functionalities](#functionalities)
- [Installation](#installation)
- [Vim-Plug](#vimplug)
- [Packer](#packer)
- [Commands](#commands)
- [Setup](#setup)
---
In modern IDEs like Visual Studio and JetBrains products, there's always a fast way to jump between recently opened files. In Neovim, this often requires fuzzy finders or full buffer lists, which don’t reflect recency in a consistent way and may include irrelevant or closed buffers.
---
**active-files.nvim** provides a clean, dedicated UI to quickly access the last N files you've worked on — sorted by recency of usage. With a popup window, non-intrusive indexing, and direct file switching, this gives you a workflow familiar to JetBrains and VS users — but native to Neovim.
[](https://asciinema.org/a/1Gnp274hSDNpdkfnWerxj2sF0)
---
## Repository structure :open_file_folder:
```bash
active-files.nvim/
├── LICENSE
├── lua
│ └── active-files
│ ├── commands.lua # Exposed commands
│ ├── init.lua # Plugin entry point
│ ├── ui.lua # UI and switching logic
│ └── util.lua # Utility helpers
└── README.md
```
---
- [x] Automatically tracks most recently opened files
- [x] Floating window UI inspired by JetBrains and Visual Studio
- [x] Jump to file by number key (1–9)
- [x] Displays filenames with relative paths
- [ ] Configurable number of active files --planned
- [ ] Configurable active files sorting criteria -- planned
---
Requires **Neovim v0.9+**. No external dependencies required.
```lua
Plug 'jkeresman01/active-files.nvim'
```
```lua
use 'jkeresman01/active-files.nvim'
```
---
These are the available user commands:
| Command | Description |
|------------------------|--------------------------------------------------|
| `:ShowActiveFiles` | Show floating popup with active files |
| `:SelectActiveFile` | Select a file from the floating window (internal)|
| `:SwitchToActiveFile n`| Immediately switch to file at index `n` |
---
Set the keybindings to match your workflow here is one example:
```lua
require("active-files").setup()
vim.keymap.set("n", "", "ShowActiveFiles", { desc = "Show active files" })
-- Optional
for i = 1, 9 do
vim.keymap.set("n", "" .. i, function()
vim.cmd("SwitchToActiveFile " .. i)
end, { noremap = true, silent = true, desc = "Switch to active file " .. i })
end
vim.api.nvim_create_autocmd("FileType", {
pattern = "active-files",
callback = function(args)
vim.keymap.set("n", "", "SelectActiveFile", { buffer = args.buf, silent = true })
end,
})
```
---
| Keybinding | Mode | Description |
|------------------|------|----------------------------------------------|
| `` | `n` | Show the active files floating popup |
| `1`–`9` | `n` | Jump directly to the N-th most recent file |
| `` | `n` | Inside popup: open the selected file |