2025-07-13 04:41:00
github.com
View on the Visual Studio Marketplace.
Youtube video showing voil features: https://www.youtube.com/watch?v=c_L0c7rcYLs&t=5s.
Edit file system like a text buffer (similar to oil.nvim). Create new files/directories by typing their names in the editor (names ending with /
are treated as directories). Convert your existing text-editing skills to file system manipulation skills, as opposed of the vscode’s default file explorer which requires mouse interaction or memorizing new keybinds (and still is nowhere near as powerful). Demo:
voil.mp4
There is a hidden ID associated with each file which is how voil determines which file is being e.g. renamed or moved. This ID is normally hidden using vscode’s decorations but you can show them by setting the following configs:
"voil.hideIdentifier": false,
"voil.allowFocusOnIdentifier": true
If you e.g. want to copy or move a file you must make sure to use commands that also copy the identifier and not just the visible part (that is, commands that select entire lines and not words).
Uses ctrl+shift+b
to open the voil panel and if we are already in voil navigates to the parent directory.
{
"key": "ctrl+shift+b",
"command": "voil.openPanelCurrentDir",
"when": "!voilDoc"
},
{
"key": "ctrl+shift+b",
"command": "voil.gotoParentDir",
"when": "voilDoc && editorFocus"
}
Uses -
key in normal mode to open the voil panel and if we are already in voil navigates to the parent directory.
{
"key": "-",
"command": "voil.openPanelCurrentDir",
"when": "!voilDoc && vim.mode == 'Normal' && editorFocus"
},
{
"key": "-",
"command": "voil.gotoParentDir",
"when": "voilDoc && vim.mode == 'Normal' && editorFocus"
}
Title: voil: Open voil panel at workspace root
Description: Opens the voil panel at the root of the workspace.
Title: voil: Open voil panel at current directory
Description: Opens the voil panel at the current directory.
Title: voil: Toggle recursive listing
Description: Toggles the recursive listing of files and directories.
Title: voil: Go to parent directory
Description: Navigates to the parent directory.
Title: voil: Filter files
Description: Sets a filter to display specific files.
Title: voil: toggle file size
Description: Toggles the display of file sizes.
Title: voil: toggle file creation date
Description: Toggles the display of file creation dates.
Title: voil: sort by file name
Description: Sorts the files by their names.
Title: voil: Enter the current selected item.
Description: Enters the currently selected item.
Title: voil: Open a preview to current selected item.
Description: Opens a preview of the currently selected item.
Title: voil: Close the voil window.
Description: Closes the voil window.
Title: voil: Apply the changes to filesystem.
Description: Saves and applies the changes to the filesystem.
Title: voil: sort by file type
Description: Sorts the files by their types.
Title: voil: sort by file creation time
Description: Sorts the files by their creation times.
Title: voil: sort by file size
Description: Sorts the files by their sizes.
Title: voil: toggle sort order
Description: Toggles the sort order of the files.
Title: voil: set the current directory
Description: Sets the current directory.
Title: voil: run shell command on selected items
Description: Runs a shell command on the selected items.
Title: voil: Open the current directory in the default file explorer
Description: Opens the current directory in the default file explorer.
You can define custom shell commands to be executed on the selected items. The following special variables will be expanded in the command:
${file}
expands to the full path of the selected file${filename}
expands just to the name of the selected file${files}
expands to the space-separated list of full paths of the selected files${filenames}
expands to the space-separated list of names of the selected files${inp:inputname}
prompts the user for input with the given name
If the command includes ${file}
or ${filename}
the command will be executed for each selected file (so if 10 files are selected, the command will be executed 10 times). If the command includes ${files}
or ${filenames}
the command will be executed once with all selected files.
For example here is how to configure zip
and unzip
commands:
"voil.customShellCommands": [
{
"name": "Zip",
"id": "zip",
"cmd": "zip ${inp:compressedname}.zip ${filenames}"
},
{
"name": "Unzip",
"id": "unzip",
"cmd": "unzip ${file}"
},
],
And here is how to bind them to keybindings in keybindings.json
:
{
"key": "ctrl+f1",
"command": "voil.runShellCommandWithIdOnSelection",
"args": {
"id": "unzip"
},
"when": "voilDoc"
},
{
"key": "ctrl+f2",
"command": "voil.runShellCommandWithIdOnSelection",
"args": {
"id": "zip"
},
"when": "voilDoc"
}
If you enjoy voil, please consider donating to support its development.
Keep your files stored safely and securely with the SanDisk 2TB Extreme Portable SSD. With over 69,505 ratings and an impressive 4.6 out of 5 stars, this product has been purchased over 8K+ times in the past month. At only $129.99, this Amazon’s Choice product is a must-have for secure file storage.
Help keep private content private with the included password protection featuring 256-bit AES hardware encryption. Order now for just $129.99 on Amazon!
Help Power Techcratic’s Future – Scan To Support
If Techcratic’s content and insights have helped you, consider giving back by supporting the platform with crypto. Every contribution makes a difference, whether it’s for high-quality content, server maintenance, or future updates. Techcratic is constantly evolving, and your support helps drive that progress.
As a solo operator who wears all the hats, creating content, managing the tech, and running the site, your support allows me to stay focused on delivering valuable resources. Your support keeps everything running smoothly and enables me to continue creating the content you love. I’m deeply grateful for your support, it truly means the world to me! Thank you!
BITCOIN bc1qlszw7elx2qahjwvaryh0tkgg8y68enw30gpvge Scan the QR code with your crypto wallet app |
DOGECOIN D64GwvvYQxFXYyan3oQCrmWfidf6T3JpBA Scan the QR code with your crypto wallet app |
ETHEREUM 0xe9BC980DF3d985730dA827996B43E4A62CCBAA7a Scan the QR code with your crypto wallet app |
Please read the Privacy and Security Disclaimer on how Techcratic handles your support.
Disclaimer: As an Amazon Associate, Techcratic may earn from qualifying purchases.