Command line file manager in Rust with VIM-inspired keybindings.
NOTE!! This is still in Work in Progress and not usable for daily use until version
0.1.0 is released.
- Fast: The application should be snappier at startup times after reading all necessary configs, loading resources, etc.
- Fully operational: Most of the features of a morden file manager should be implemented, although support for uncommon features should be offloaded to scripts/plugins
- Keyboard Driven: The whole idea of the project is based upon the keyboard driven approach inspired from vim.
- Functional: Composition/chaining of vim-like commands based on your existing muscle memory, to just get things done. I am not inclined towards defining new set of keybindings/commands until unless it is absolutely necessary!
Possible future goals
- 24-bit Image: Preview image with the help of w3mimg(or possibly ueberzug).
- Async: Make some of the core operations non-blocking
- Extensibility: Marcos could be extended with the help of plugins
- Support for lua/python plugins: Plugins can be written in lua/python languages
Only some key bindings are implemented as of now. All mentioned key bindings will be implemented before
|j||Select item down|
|k||Select item up|
|h||Go previous (left)|
|:||Activate command mode|
|gg||Go to the first selection|
|G||Go to the last selection|
|[count]G||Go to the [count] item|
|za||Toggle visibility of hidden items|
|y||Yank(Copy) the selected file/folder(Similar to Ctrl-c)|
|x||Cut the selected file/folder(similar to Ctrl-x)|
|p||Paste the Copied/Cut file/folder(Similar to Ctrl-v)|
|r||Rename selected file/folder|
|dd||Delete selected file/folder(with confirmation)|
|o||Create new file(
|O||Create new directory (
|P||Paste the Copied/Cut file/folder replacing existing with same name(with Confirmation)|
|mX||Create a bookmark with name X|
|`X||Jump to bookmark with name X|
|n||Move to next match|
|N||Move to previous match|
|v||Starts visual mode, selects all files until you press ESC|
|V||Visual mode, select all|
|Ctrl+r||Refresh(listings, data, cache, etc)|
|ESC||Get me out!|
The best way to learn and know about the structure is by reading the docs by running:
cargo doc --open
Besides, I try my best to include relevant comments and TODO[detail] tags.