lf(意為「list files」即「列出文件」)是一個用 Go 編寫的終端文件管理器,受到 ranger 的強烈啟發。
其突出特點包括伺服器/客戶端架構(這樣你可以在一個終端窗口中剪切,在另一個窗口中粘貼)以及高度可定製性。
與 ranger 不同的是,lf 故意將標籤或窗口這樣的功能排除在外,交給窗口管理器或終端多路復用器來處理。
安裝
配置
將默認配置文件從 /usr/share/doc/lf/lfrc.example 複製到 ~/.config/lf/lfrc,作為進一步定製的模板。配置示例中的注釋包含一些常見功能。
使用
默認鍵位綁定與 vim 類似,與 ranger 的默認設置有所不同,具體請參見 lf(1) § QUICK REFERENCE。
另請參閱錄屏教程。
提示與技巧
從 ranger 遷移到 lf
對於已經習慣使用 ranger 作為文件管理器的用戶,遷移到 lf 意味著默認功能較少,行為略有不同。
lf 項目的 wiki 包括一個關於如何配置 lf 來添加來自 ranger 的功能和默認設置的逐步指南。
使用 rifle 打開文件
lf 可以使用包含在 ranger包 中的文件打開器 rifle。
設置環境變量以自動使用 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