Skip to content(if available)orjump to list(if available)

Show HN: VS Code extension to edit the filesystem like a text buffer

Show HN: VS Code extension to edit the filesystem like a text buffer

24 comments

·July 13, 2025

This is a spiritual adaptation of oil.nvim for vscode. The main idea is you edit the filesystem by editing the current directory listing's text buffer. For example, if I want to rename a file, I just rename it in the listing file. This is extremely powerful because it translates all of your text-editing skills immediately into file editing capabilities.

Some features:

* Create/rename/move/delete files by editing the current directory listing's textbuffer

* Filter using glob pattern

* Trash and undo support

* Works even in remote-ssh workspaces

* Works across multiple vscode windows

lorenzohess

See vimv (https://github.com/thameera/vimv) for a minimal version of this in the CLI, using Vim as the editor.

nsonha

When I was a student about 10 years ago there was a custom shell that works like this and even had an extension for sublime, but for the life of me I cannot remember its name.

SwiftyBug

Is it possible to make an extension like that for Zed?

gschizas

This looks cool, but I'm a bit wary of publishers that aren't verified.

> Do you trust the publisher "Ali Mostafavi"?

> The extension voil is published by Ali Mostafavi. This is the first extension > you're installing from this publisher.

> Ali Mostafavi is not verified.

> Visual Studio Code has no control over the behavior of third-party extensions, including how they manage your personal data. Proceed only if you trust the publisher.

hexomancer

You can view the source code and package the extension yourself if you are worried about that. It is only ~2000 LOC.

It is not easy to get verified in vscode marketplace, even major publishers like Qt organization are not verified much less so a solo open source developer like myself.

4gotunameagain

> view the source code and package the extension yourself

The problem is that nobody will do that. Even if it were 500 LOC.

And this is why supply chain attacks are on the rise.

hexomancer

What are you proposing? Should I not be allowed to develop and publish an extension that I think is useful?

> nobody will do that

"nobody" is a strong word. Yes, most people don't do that, but if a single person reads the source code and finds something nefarious they can report it or leave a review disclosing that and my reputation would be ruined.

turboponyy

"Look what they need to mimic a fraction of our power" - some Emacs user, probably

hexomancer

I don't use emacs so I may not be familiar with the full power, but if you are referring to dired, I think oil.nvim is much, much more powerful than dired.

The major difference being that you still need to learn some new keybinds for dired, for example, you can't just create a file by editing the text buffer whereas in oil.nvim (and by extension, voil) your text editing skills immediately apply.

globular-toast

You can switch to wdired and then edit the filenames etc. But true you can't create/delete files. Creating empty files is rarely useful or necessary, though, so not sure why you'd want that. Deleting files is more useful but that seems perfect in normal dired as you can see what you've marked rather than try to mentally keep track of lines you've already deleted.

hexomancer

> Creating empty files is rarely useful or necessary

I kind of disagree? Most files were once created as an empty file! (at least that's the case in my workflow).

whalesalad

Was literally thinking the same thing. A colleague of mine basically used emacs as an operating system. Pretty sure he could get his to make buttered toast.

heltale

Some vim user too! oil.nvim is a pretty popular package that does this.

hexomancer

I obviously love oil.nvim and that's why I ported it to vscode. But I think in some ways voil is even more powerful than oil. Specifically:

- It can work across multiple vscode windows

- The top line (that shows the current directory) can be used to filter files. For example, if you add "*.{txt,md}" to the end of that line, it will only show the txt and markdown files.

- The ability to defined custom shell commands and bind keybindings to them. For example, I can create a command that zips selected files and run it with a single keybinding in voil.

- Undo functionality

null

[deleted]

_Broken_Cloud_

The idea's cool, but the ui is kinda raw

hexomancer

Thanks for the feedback. Can you be a little more specific? What do you mean by "raw"? Do you mean from an aesthetic standpoint or is there some functionality you are missing from the UI?

senectus1

haha yeah this'll never bee a problem with AI plugged into your VSCode :-D

Etheryte

In this day and age, this could very well be an up and coming startup. "Hey <LLM>, find all files on my computer that might be a virus and delete them."

hexomancer

Since voil uses its own file extension (.voil) you can easily disable copilot for voil windows.

Also voil asks you to confirm destructive actions. And even if you do, by default voil moves deleted files to a trash location and has undo functionality so you can easily undo your mistakes.