lf

Terminal file manager written in Go inspired by ranger with vi-style keybindings and shell integration

install· Go

lf is a terminal file manager written in Go that provides a vi-style interface for navigating and managing files. Inspired by the ranger file manager, it features customizable keybindings with vi and readline defaults, making it familiar to users of terminal text editors.

The tool is distributed as a single binary without runtime dependencies and runs across Linux, macOS, BSDs, and Windows. It implements asynchronous IO operations to prevent UI blocking and uses a server/client architecture that enables remote commands to manage multiple instances. The file manager integrates with shell commands for extensibility, allowing users to configure custom operations and workflows.

Designed for terminal users who prefer keyboard-driven navigation, lf deliberately excludes built-in pagers, editors, and file operation commands, instead relying on existing shell tools like mkdir, touch, and chmod. This philosophy keeps the tool focused on file management while leveraging the user's existing command-line environment.

Installation

# via Go
env CGO_ENABLED=0 go install -trimpath -ldflags="-s -w" github.com/gokcehan/lf@latest

lf file manager with icons and border

lf image preview feature

lf new features showcase

Alternatives & related tools

add a badge to your README

Maintain lf? Show that it's featured on trmn. The badge links back to this page.

Featured on trmn
Markdown
[![Featured on trmn](https://www.trmn.sh/badge/lf.svg)](https://www.trmn.sh/tools/lf?utm_source=badge)
HTML
<a href="https://www.trmn.sh/tools/lf?utm_source=badge"><img src="https://www.trmn.sh/badge/lf.svg" alt="Featured on trmn" height="20"></a>