6422bd7492
* Fix replace dialog for symlinks If the oldPath is a symlink to the newPath or vice versa, than os.Stat() would resolve this symlink, and both the oldStat and newStat would be the same. Hence, the replace dialog would not appear and the newPath file would be overwritten by the oldPath file whilst the oldPath would be deleted. It is the same story when the oldPath and newPath are both symlinks to the same file. * Fix completion in the case of broken symlinks If the current directory contains broken symlinks then matchFile() would return at first broken symlink. Let's consider the following example: $ ls -F ~/ broken@ dir/ file The broken@ is a symlink to ~/foo - non existent file. If one would enter the following command in lf: :cd ~/<tab> it would not suggest possible completion options because matchFile() would return as soon as it meet the broken symlink. * Don't resolve symlinks when move files/dirs (#571) This will allow to move broken symlinks. * Fix symlinks copying/moving (#571) Copy symlinks, do not try to resolve it and copy the file pointed by this symlink. Also this allows to copy symlink to directory. |
||
---|---|---|
etc | ||
gen | ||
.gitignore | ||
.travis.yml | ||
app.go | ||
client.go | ||
colors_test.go | ||
colors.go | ||
complete_test.go | ||
complete.go | ||
copy.go | ||
diacritics_test.go | ||
diacritics.go | ||
doc.go | ||
docstring.go | ||
eval_test.go | ||
eval.go | ||
go.mod | ||
go.sum | ||
icons.go | ||
lf.1 | ||
lf.desktop | ||
LICENSE | ||
main.go | ||
misc_test.go | ||
misc.go | ||
nav.go | ||
opts.go | ||
os_windows.go | ||
os.go | ||
parse.go | ||
README.md | ||
scan.go | ||
server.go | ||
ui.go |
LF
Google Groups | Wiki | #lf (on Freenode) | #lf:matrix.org (with IRC bridge)
This is a work in progress. Use at your own risk.
lf
(as in "list files") is a terminal file manager written in Go.
It is heavily inspired by ranger with some missing and extra features.
Some of the missing features are deliberately omitted since they are better handled by external tools.
See faq for more information and tutorial for a gentle introduction with screencasts.
Features
- Cross-platform (Linux, OSX, BSDs, Windows (partial))
- Single binary without any runtime dependencies (except for terminfo database)
- Fast startup and low memory footprint (due to native code and static binaries)
- Server/client architecture to share file selection between multiple instances
- Configuration with shell commands
- Customizable keybindings (vi and readline defaults)
- Preview filtering (for source highlight, archives, pdfs/images as text etc.)
Non-Features
- Tabs or windows (handled by window manager or terminal multiplexer)
- Builtin pager/editor (handled by your pager/editor of choice)
Installation
See packages for community maintained packages.
See releases for pre-built binaries.
If you like to build from the source on unix:
env CGO_ENABLED=0 GO111MODULE=on go get -u -ldflags="-s -w" github.com/gokcehan/lf
On windows cmd
:
set CGO_ENABLED=0
set GO111MODULE=on
go get -u -ldflags="-s -w" github.com/gokcehan/lf
On windows powershell
:
$env:CGO_ENABLED = '0'
$env:GO111MODULE = 'on'
go get -u -ldflags="-s -w" github.com/gokcehan/lf
Usage
After the installation lf
command should start the application in the current directory.
Run lf -help
to see command line options.
Run lf -doc
to see the documentation.
See etc directory to integrate lf
to your shell or editor.
An example configuration file can also be found in this directory.
See integrations to integrate lf
to other tools.
See tips for more examples.
Contributing
See contributing for guidelines.