lf

出自 ArchWiki

lf(意为“list files”,列出文件)是一个用 Go 语言编写的终端文件管理器,其灵感很大程度上来源于 ranger

突出的特点是服务器/客户端架构(因此你可以在一个终端窗口中剪切,然后在另一个窗口中粘贴)和高度自定义性。

ranger 不同,一些功能(如标签页或窗口)被有意地不包括在内,而是留给窗口管理器终端复用器处理。

安装

安装 lf 软件包,或者 lf-gitAUR 以获取开发版本。

配置

复制默认配置文件 /usr/share/doc/lf/lfrc.example~/.config/lf/lfrc 以用作进一步自定义的模板。一些常用功能已作为注释包含在配置示例中。

有关更广泛的配置,请参阅 lf(1),另请参阅项目 wiki

用法

默认的快捷键绑定与 vim 相似,但与 ranger 的默认设置略有不同,请参阅 lf(1) § QUICK REFERENCE

另请参阅截屏演示

技巧与诀窍

从 ranger 过渡到 lf

对于已经习惯于将 ranger 作为文件管理器的用户来说,迁移到 lf 意味着更少默认功能和略有不同的行为。

lf 项目 wiki 包含一个关于如何配置 lf 以添加 ranger 的功能和默认设置的逐步指南

使用 rifle 文件打开器

lf 可以使用文件打开器 rifle,它包含在 ranger 软件包中。

设置一个环境变量以自动使用 rifle 在相关应用程序中打开文件

export OPENER='rifle'

对于编辑文件,您还可以设置默认编辑器

export EDITOR='vim'

预览文件

要自动预览当前选定文件的内容,请在 ~/.config/lf/lfrc 中设置自定义预览脚本。可以添加一个包装器来包装 ranger 中的 scope.sh 脚本,该脚本可以作为自定义的良好模板。还有许多其他可以与 lf 一起使用的预览器

沙盒预览

虽然默认的 lf 配置仅预览文本文件,但使用更复杂的预览解析器在某种程度上是危险的。如果预览解析器(如 pdftotext)中存在漏洞,则可以使用此简单脚本使用 bubblewrap 对预览器进行沙盒化处理。

~/.config/lf/previewSandbox.sh
#!/bin/bash
set -euo pipefail
(
    exec bwrap \
     --ro-bind /usr/bin /usr/bin \
     --ro-bind /usr/share/ /usr/share/ \
     --ro-bind /usr/lib /usr/lib \
     --ro-bind /usr/lib64 /usr/lib64 \
     --symlink /usr/bin /bin \
     --symlink /usr/bin /sbin \
     --symlink /usr/lib /lib \
     --symlink /usr/lib64 /lib64 \
     --proc /proc \
     --dev /dev \
     --ro-bind /etc /etc \
     --ro-bind ~/.config ~/.config \
     --ro-bind ~/.cache ~/.cache \
     --ro-bind "$PWD" "$PWD" \
     --unshare-all \
     --new-session \
     bash ~/.config/lf/preview.sh "$@"
)

将您的预览器设置为沙盒脚本,并将您的真实预览脚本放在 ~/.config/lf/preview.sh

set previewer ~/.config/lf/previewSandbox.sh