fff is a easy-to-use terminal file manager written in GO.
This repo is now waiting for new features(error handling/generics) of golang 2
- Cross platform: macOS, Linux, BSD(not tested), windows(todo) etc
- Multiple contexts(aka tabs). Up to 4, use 1-4 key to switch through them
- Bookmark support
- Multiple directories show at mean time
- Jump to any file item you can see
- Filter file in multiple ways: by type, by modify time, by size, by name
- Customizable key bindings
- Spawn a sub shell in current directory
- Edit and preview text file
- Rename/Create files and directories
- Batch copy/move files/directories from any where you selected
- Copy with progress indicator
- Use SSH as local directory
- Use archive file as local directory
As it still under development, there is no pre-build binary available.
You can build it from source:
go get -u github.com/jacokoo/fff
Navigation:
↓, j select next file ↑, k select previous file
J select the last file K select the first file
→, l open selected dir ←, h close current dir
f filter files in current dir F clear filter
ss sort current dir by size sm sort current dir by modify time
sn sort current dir by name g refresh current dir
d toggle show file details . toggle show hidden files
, remove the first opened dir
w jump over all items displayed once W jump over all items displayed
i jump over the current dir once I jump over the current dir
1, 2, 3, 4 switch to corresponding context
↵ open selected item use system default program
ensure input (during input), cancel jump (during jump)
esc abort input (during input), cancel jump (during jump)
File:
m toggle mark file u toggle mark all items
+ create new dir N create new file
R rename selected file D delete selected/marked items
U clear clips C append selected/marked items to clip
P paste all cliped items to current dir
M move all cliped items to current dir
Bookmark:
bb toggle show bookmark bn create bookmark
bd delete bookmark
bw jump over bookmark once bW jump over bookmark
Misc:
q, ctrl-q Quit fff v open selected file via pager
! start a shell in current dir e editor selected file
? for help
Once fff
is installed, use fff
to start fff
with current directory, or use fff PATH
to specify the working directory.
Use h, j, k, l
or ←, ↓, ↑, →
to navigate item
Use J
to select the last item, K
to select the first item
Use .
to toggle show hidden file, d
to toggle show details
Use g
to refresh the current directory
Use Enter ↵
to open selected item via system default application
Via jump mode, its able to jump to any items(file, directory, bookmark) displayed in the screen.
After enter jump mode, there are at most two characters will be displaed in the head of the item. Type these two characters could make the item selected.
The first character is the heading charactor of the item, the second one is generated alphabetically.
There are three type of jump mode
- Jump over all, use key
w
orW
- Only for bookmarks, use key
bw
orbW
- Only for current directory, use key
i
orI
Uppercase key is used for continuous jump: it won't stop until the last jump is a file or an empty directory.
Filter is used to filter items in the current directory.
Use f
to start input filters. Multiple filter can be combined(logical and
) by a space.
Use F
to clear all filters.
There are four type of filter:
-
By last modify time
Filter start with
+
is a by mtime filter. Three time unit are supported:h
hours,d
days,m
monthse.g. :
+2m
means file is modified in recent 2 months+10h
means file is modified in recent 10 hours -
By size
Filter start with
<
or>
is a by size filter. Three size unit are supported:k
kibibyte,m
Mebibyte,g
Gibibytee.g. :
>1g
means file size is greater then 1G<10.2m
means file size is less then 10.2M -
By type
FIlter start with
:
is a by type filter. Only two type supported:f
file,d
directorye.g. :
:f
only show files:d
only show directories -
By name
Otherwise the filter is a by name filter. The name of the file or directory must contains the entire string of the filter
Multiple filter example:
:f <1m +10d go
means the item must be a file and the size of it must less then 10M and it is modified in recent 10 days and the name of it must contains go
.
Use R
to rename selected item
Use +
to create new directory, use N
to create new file
Use m
to toggle mark item, use u
to toggle mark all items in current directory
Use D
to delete selected item or marked items
Use C
to append selected item or marked items to clip for further use, use U
to clear clip
Use P
to paste clipped items to current directory and clear clip
Use M
to move clipped items to current directory and clear clip
Create a text config file with extension .ssh.fff
.
Options:
Key | Description | Mandatory | Default value |
---|---|---|---|
host | the ssh host IP or domain name | true | |
user | the ssh user | false | root |
port | the ssh port | false | 22 |
key | absolute path of the private key file used for auth | false | |
shell | shell to use when spawn a new sub shell | false | bash |
editor | editor to use when edit remote file | false | vi |
pager | pager to use when view remote file | false | less |
timeout | ssh timeout | false | 3s (3 seconds) |
e.g. :
host: 192.168.1.249
user: jaco
key: /Users/jaco/.ssh/id_rsa
Auth sequence:
- Use
key
file if supplied - Use
ssh-agent
- Ask for password
All settings are placed in config.yml, to override it, copy it to ~/.config/fff/config.yml
and change things according to the format.
-
File duplicate in current folder
-
Operates run in background with a spinner and cancelable
-
Windows support
-
Archive/Unarchive support(progress visible, cancelable)
-
FTP integration
-
HDFS integration(Maybe)