* build: clean up gitignore and remove empty gitmodules
Problem: .gitignore contained 48 lines of C/shared-object boilerplate
irrelevant to a Lua Neovim plugin. .gitmodules was tracked but empty.
Solution: replace .gitignore with minimal entries covering only files
this project actually produces. Delete the vestigial .gitmodules.
* build: add editorconfig and prettierrc
Problem: no editor or formatter configuration, inconsistent with
cp.nvim and diffs.nvim conventions.
Solution: add .editorconfig (2-space Lua indent, utf-8, final newline)
and .prettierrc (prose wrap, 80 cols, single quotes, no semi) matching
the other repos.
* build: add Makefile for lint and test targets
Problem: .github/pre-commit calls `make fastlint` and .github/pre-push
calls `make lint && make test`, but no Makefile existed, so the git
hooks failed.
Solution: add Makefile with lint (stylua + selene), fastlint
(pre-commit), and test (luarocks test) targets.
* docs: add fork copyright to LICENSE
Problem: LICENSE only contained the original author's copyright notice.
Solution: add a second copyright line for the fork maintainer. MIT
requires retaining the original notice; adding a line for derivative
work is standard practice.
* ci: restructure workflows to quality/test/luarocks pattern
Problem: CI used a single tests.yml for linting, typechecking, and
testing. No conditional path filtering, no markdown format check, and
a stale mirror_upstream_prs.yml and duplicate luarocks.yml existed.
Solution: replace tests.yml with quality.yaml (stylua, selene,
lua-typecheck, prettier with dorny/paths-filter) and test.yaml
(nvim-busted, stable+nightly matrix). Update luarocks.yaml to
reference quality.yaml. Delete mirror_upstream_prs.yml and duplicate
luarocks.yml. Fix automation workflow sender check.
* build: rewrite issue templates
Problem: issue templates used upstream stevearc references, severity
dropdowns, outdated lazy.nvim bootstrap, and the .yml extension
inconsistent with other repos.
Solution: replace with .yaml templates matching cp.nvim/diffs.nvim
style. Bug report uses prerequisites checkboxes, checkhealth output,
modern lazy.nvim bootstrap with vim.g.oil pattern. Feature request
uses problem/solution/alternatives format. Add config.yaml to disable
blank issues and link discussions.
* docs: rewrite README
Problem: README contained upstream triage tables, severity dropdowns,
the old setup() pattern, a tree view question, and references to
stevearc/oil.nvim as the primary source.
Solution: full rewrite matching cp.nvim/diffs.nvim style with bold
tagline, features list, requirements, installation, documentation,
FAQ (lazy.nvim setup with vim.g.oil, migration guide, alternatives),
and acknowledgements crediting the original author.
* revert: remove Makefile
Problem: Makefile was added in b9279b5 but was previously deleted
intentionally.
Solution: remove it.
95 lines
2.8 KiB
Markdown
95 lines
2.8 KiB
Markdown
# oil.nvim
|
|
|
|
**A file explorer that lets you edit your filesystem like a buffer**
|
|
|
|
Browse directories as normal Neovim buffers, then create, rename, move, copy,
|
|
and delete files by editing the listing and saving. Cross-directory operations
|
|
work seamlessly across local, SSH, S3, and trash adapters.
|
|
|
|
https://user-images.githubusercontent.com/506791/209727111-6b4a11f4-634a-4efa-9461-80e9717cea94.mp4
|
|
|
|
## Features
|
|
|
|
- Edit directory listings as normal buffers — mutations are derived by diffing
|
|
- Cross-directory move, copy, and rename across any adapter
|
|
- Adapters for local filesystem, SSH, S3, and OS trash
|
|
- File preview in split or floating window
|
|
- Configurable columns (icon, size, permissions, timestamps)
|
|
- Executable file highlighting and filetype-aware icons
|
|
- Floating window and split layouts
|
|
|
|
## Requirements
|
|
|
|
- Neovim 0.10+
|
|
- Optional:
|
|
[mini.icons](https://github.com/nvim-mini/mini.nvim/blob/main/readmes/mini-icons.md)
|
|
or [nvim-web-devicons](https://github.com/nvim-tree/nvim-web-devicons) for
|
|
file icons
|
|
|
|
## Installation
|
|
|
|
Install with your package manager of choice or via
|
|
[luarocks](https://luarocks.org/modules/barrettruth/oil.nvim):
|
|
|
|
```
|
|
luarocks install oil.nvim
|
|
```
|
|
|
|
## Documentation
|
|
|
|
```vim
|
|
:help oil.nvim
|
|
```
|
|
|
|
## FAQ
|
|
|
|
**Q: How do I set up oil.nvim with lazy.nvim?**
|
|
|
|
```lua
|
|
{
|
|
'barrettruth/oil.nvim',
|
|
init = function()
|
|
vim.g.oil = {
|
|
columns = { 'icon', 'size' },
|
|
delete_to_trash = true,
|
|
}
|
|
end,
|
|
}
|
|
```
|
|
|
|
Do not use `config`, `opts`, or `lazy` — oil.nvim loads itself when you open a
|
|
directory.
|
|
|
|
**Q: How do I migrate from stevearc/oil.nvim?**
|
|
|
|
Replace `stevearc/oil.nvim` with `barrettruth/oil.nvim` in your plugin manager
|
|
and switch your `setup()` call to a `vim.g.oil` assignment in `init`. The
|
|
configuration table is the same.
|
|
|
|
**Q: Why "oil"?**
|
|
|
|
From the [vim-vinegar](https://github.com/tpope/vim-vinegar) README, a quote by
|
|
Drew Neil:
|
|
|
|
> Split windows and the project drawer go together like oil and vinegar
|
|
|
|
**Q: What are some alternatives?**
|
|
|
|
- [stevearc/oil.nvim](https://github.com/stevearc/oil.nvim): the original
|
|
oil.nvim
|
|
- [mini.files](https://github.com/nvim-mini/mini.nvim/blob/main/readmes/mini-files.md):
|
|
cross-directory filesystem-as-buffer with a column view
|
|
- [vim-vinegar](https://github.com/tpope/vim-vinegar): the granddaddy of
|
|
single-directory file browsing
|
|
- [dirbuf.nvim](https://github.com/elihunter173/dirbuf.nvim): filesystem as
|
|
buffer without cross-directory edits
|
|
- [lir.nvim](https://github.com/tamago324/lir.nvim): vim-vinegar style with
|
|
Neovim integration
|
|
- [vim-dirvish](https://github.com/justinmk/vim-dirvish): stable, simple
|
|
directory browser
|
|
|
|
## Acknowledgements
|
|
|
|
oil.nvim was created by
|
|
[Steven Arcangeli](https://github.com/stevearc/oil.nvim). This fork is
|
|
maintained by [Barrett Ruth](https://github.com/barrettruth).
|