Ranger 用法总结

前言

  自从大四的寒假接触到了 Linux,博主就对命令行越来越着迷,将自己的精力从 GUI 转向了 CLI。但博主早已经习惯了 Windows 上面的终极文件管理器 —— Total Commander(配上 AutoHotKey 脚本 Vim 化操作和众多插件),奈何 Linux 上的 Double Commander 的功能差 TC 不止一点点,且不能在终端下运行,所以博主刚开始也只是以玩一玩的心态学习 Linux,并没有把它作为生产力工具使用,直到遇到了 Ranger。
  Ranger 是一个非常实用的程序,尤其是对于那些工作在服务器上的用户(不含 GUI)。如果你主要使用命令行,并且在寻找一个好的命令行管理器,Ranger 可能是你最优的选择。
  本文主要参考了 Ranger 内置的说明文件(在 Ranger 内键入 ?m 即可查看)。

简介

特点

  • UTF-8 Support (if your Python copy supports it)
  • Multi-column display
  • Preview of the selected file/directory
  • Common file operations (create/chmod/copy/delete/…)
  • Renaming multiple files at once
  • VIM-like console and hotKeys
  • Automatically determine file types and run them with correct programs
  • Change the directory of your shell after exiting ranger
  • Tabs, bookmarks, mouse support…

依赖项

  • Python (>=2.6 or >=3.1) with the curses module and (optionally) wide-unicode support
  • A pager (less by default)

安装并启动

sudo apt-get install ranger

  或者通过 pip 安装:

pip install ranger-fm

  然后键入 ranger 启动,sudo ranger 以管理员身份启动 Ranger。在 Ranger 中用键入 q 或者 Q 或者 : + quit + ENTER 退出 Ranger。

选项

ranger [--version] [--help] [--debug] [--clean] [--confdir=directory]
       [--copy-config=which] [--choosefile=target] [--choosefiles=target]
       [--choosedir=target] [--selectfile=filepath] [--list-unused-Keys]
       [--list-tagged-files=tag] [--profile] [--cmd=command] [path]
选项 说明
-d, --debug 调试模式:当发生错误时,Ranger 会退出并打印回溯。
-c, --clean 干净模式:Ranger 不会读取或者创造任何配置文件,不会在系统内留下任何痕迹。
-r dir, --confdir=dir 将 Ranger 的配置文件夹从 ~/.config/ranger 改为 dir
--copy-config=file 复制一份默认的配置文件到 Ranger 的配置文件夹内,已存在的不会被盖写。file 包括 allcommandscommands_fullrcriflescope
--choosefile=targetfile 允许你使用 Ranger 选择一个 targetfile 文件,当你用在 Ranger 中用 r 命令打开一个文件时,Ranger 会退出,并将这个文件的绝对路径写入 targetfile 文件。
--choosefiles=targetfile 可以选择多个文件的绝对路径写入 targetfile 文件,每一个占一行,按字母升序排列。
--choosedir=targetfile 将退出 Ranger 后的最后一个访问过的文件的绝对路径写入 targetfile 文件。
--selectfile=targetfile Ranger 的光标跳转到 targetfile 文件。
--list-unused-Keys 列出在浏览器环境中未绑定任何动作的按键
--list-tagged-files=tag 列出用给定 tag 标记的所有文件。注意:标签是单个字符,默认标记为 *
--profile 退出时打印 CPU 使用情况的统计信息。
--cmd=command 在配置文件读取完成后执行 command 命令。多次使用此选项运行多个命令。
--version 打印版本信息并退出
-h, --help 打印此选项列表并退出

一些概念

  这个部分解释了 Ranger 中的一些重要部分是怎么工作的,并且怎么高效地使用它们。

预览

  默认情况下,只能预览文本文件,但是你可以通过设定配置 use_preview_scriptpreview_filestrue 来增加可以预览的文件类型。默认的预览脚本是 ~/.config/ranger/scope.sh,安装如下工具(每种类型只需要一个)就预览对应的文件类型,scope.sh 会自动调用它们:

工具 预览文件类型 安装
lynx
elinks w3m
网页 sudo apt install lynx
sudo apt install elinks
sudo apt install w3m
highlight
pygmentize
高亮代码 sudo apt install highlight
pip install pygmentize
img2txt 图片 sudo apt install caca-utils
atool
bsdtar
unrar
7z
压缩包 sudo apt install atool
sudo apt install libarchive-tools
sudo apt install unrar
sudo apt install p7zip
pdftotext
mutool
PDF sudo apt install poppler-utils
sudo apt install mupdf-tools
mediainfo
exiftool
媒体 sudo apt install mediainfo
sudo apt install libimage-exiftool-perl
ffmpegthumbnailer 视频缩略图 sudo apt install ffmpegthumbnailer
fontimage 字体 sudo apt install fontforge
transmission-show 种子 sudo apt install transmission-cli

  独立于 preview script,有一个通过将图像用字符画的形式直接绘制到终端中的预览功能。要启用此功能,将 preview_images 选项设置为 true 并将 preview_images_method 选项设置为一种图像预览模式(需要安装这些工具):

预览模式 是否适用于 ssh 注意 设置 preview_images_method
w3m 与 tmux 不兼容(尽管它可以工作)。 w3m
iTerm2 iTerm2 编译时必须添加 image preview support 选项。 iterm2
urxvt urxvt 编译时必须添加 pixbuf support 选项。此模式本质上是将图像暂时设置为终端背景,这样它将破坏以前设置的任何图像背景。 urxvt
urxvt-full urxvt 相同,但使用整个终端窗口预览图片。 urxvt-full

选择

  选择被定义为如果有标记,则是所有标记的文件,否则是光标处的文件。在使用 :delete 命令时一定要注意这一点,它指删除选择的所有文件及文件夹。你可以通过按 SPACEv 等来标记文件。黄色的 Mrk 符号位于终端右下角,表示此文件夹里有标记的文件。黄色的 Mrk 并不会因为切换目录而消失。

宏指令

  宏指令可以用在 command 命令中达到缩写命令的目的。

宏指令 功能
%f 高亮显示的文件
%d 当前文件夹的路径
%s 当前文件夹选择的文件
%t 当前文件夹所有标记的文件
%c 当前复制/剪切文件的完整路径
%p 选择文件的完整路径

  宏指令 %f%d%p%s 有大写的变体,%F%D%P%S,指下一个标记。为了表示一个特定的标记,可以在 %字母 中间加一个数字,比如 %7s 指当前文件夹中第七个所选择的文件。
  %c 是唯一一个作用于当前文件夹以外的宏指令,所以你可以通过复制功能达到其他的目的。比如比较在两个在不同文件夹里的文件的不同:复制文件 A(键入 yy),然后切换到文件 B 的目录,并标记文件 B(键入 SPACE),最后键入 @,输入 shell: diff %c %s。对于文件路径的宏命令(%d%c%p)通常是转义了的,所以可以直接在 shell command 命令中使用。
  此外,如果你创建了使用 Key 的按键绑定,那么宏命令 %Key(或者 %Key0%Key1、……)在 shell command 中就代表按下 Key 键几次。
  宏指令 %rangerdir 指 Ranger 的配置文件目录(/etc/ranger),你可以在 rc.conf 中添加如下代码:

alias show_commands shell less %rangerdir/config/commands.py

  %confdirranger --confdir=dir 中的 dir 文件夹,默认为 ~/.config/ranger%Space 指空格符号,你可以用它在 command 命令的最后面加上空格,防止编辑器自动从行尾去除空格。如果你要输入一个字面意义的 %,你需要用 %% 代替 %

Flag

  Flag 给你提供了一种修改生成进程行为的方法。它们被用在命令 :open_with(键入 r)和 :shell(键入 或者 s)中。

Flag 功能
-f Fork 进程(在后台运行)
-c 只运行当前文件,而不运行所选内容
-r 使用管理员权限运行应用程序(需要 sudo
-t 在新的终端窗口运行应用程序

  还有一些目前只能在 :shell 命令中使用的 Flags,比如 :shell -w df

Flag 功能
-p 将输出重定向到 Pager
-s 静音模式,输出将被丢弃
-w 完成该过程后,等待按 ENTER 键重新进入 Ranger。

  比如 :open_with c 将打开当前指向的文件,即使您已选择其他文件。:shell-w df 将运行 df 并等待你按 ENTER 键,然后再切换回 Ranger。
  默认情况下,所有的 Flag 都是关闭的,除非配置文件 rifle.conf 中另有规定。您可以指定任意多个 Flag。大写 Flag 代表否定效果,比如 -ffcccFsf 等同于 -cs-t 表示终端程序的名字,取自环境变量 $TERMCMD。如果它不存在,它会尝试从 $TERM 中提取它,并在失败时使用 xterm 作为回退。

环境变量

  Ranger 中有如下环境变量:

环境变量 说明
RANGER_LEVEL Ranger 将此环境变量设置为 1,如果它已经存在,则将其递增。外部程序可以通过检查这个变量来确定它们是否是由 Ranger 启动的。
RANGER_LOAD_DEFAULT_RC 如果将该变量设置为 false,Ranger 将不会加载默认的 rc.conf。如果将整个 rc.conf 复制到 ~/.config/ranger/,则根本不需要默认值,这样可以节省时间。
EDITOR 设置用于 E 键的编辑器。默认为 nano。
SHELL 设置 Ranger 在 :shell 命令和 S 键使用的 Shell。默认为 /bin/sh
TERMCMD 设置 Ranger 在 :terminal 命令和 t 运行标志使用的终端仿真器命令。默认为 xterm
XDG_CONFIG_HOME 指定配置文件的目录。默认为 $HOME/.config
PYTHONOPTIMIZE 这个变量决定了python的优化级别。使用 PYTHONOPTIMIZE=1(同 python -O)将使 Python 放弃断言语句,你将丢失一些调试信息。使用 PYTHONOPTIMIZE=2(同 python -OO)将另外丢弃任何文档字符串。使用此选项将禁用 F1 按键。
W3MIMGDISPLAY_PATH 设置图像预览的可执行文件的路径。默认设置为 /usr/lib/w3m/w3mimgdisplay

操作

  Ranger 中有按键命令两种操作方式,按键是直接键入键盘上的键完成某个操作,命令则需前输入 :,然后输入相应的命令。快捷键在文件 ranger/config/rc.conf 中定义,查看此文件以获取所有快捷键的列表。你可以使用 ranger --copy-config=rc 选项将其复制到本地配置目录中。
  许多快捷键都有一个额外的数字参数。键入 5j 向下移动 5 行,2l 以模式 2 打开文件,10 + SPACE 连续标记 10 个文件。
  下面列出常用操作的快捷键,其中 ^ 代表 CTRL! 代表 ALT

帮助界面

帮助界面

按键 说明
? 或者 F1 查看帮助
?m 菜单页
?k 查看快捷键
?c 查看命令
?s 查看设置

浏览器界面

  在终端输入 ranger 命令后的主界面,界面如下:

浏览器界面

移动光标

按键 说明
h 或者 LEFT
j 或者 DOWN
k 或者 UP
l 或者 RIGHT 或者 ENTER
左(回到父文件夹)


右(进入光标所在文件夹或打开光标处文件)
^u 或者 K
^d 或者 J
向上翻半页
向下翻半页
^b 或者 PAGEUP
^f 或者 PAGEDOWN
向上翻一页
向下翻一页
H
L
后退到上一个历史记录
前进到下一个历史记录
gg 或者 HOME
G 或者 END
跳转到顶端
跳转到底端
[
]
父目录上移
父目录下移
g + 对应字母 跳转到相应的目录,如:
  • gh:跳转到 ~ 目录
  • g?:跳转到 /usr/share/doc/ranger 目录
  • gR:跳转到 /usr/lib/python2.7/dist-packages/ranger 目录
  • gd:跳转到 /dev 目录
  • ge:跳转到 /etc 目录
  • gm:跳转到 /media 目录
  • gM:跳转到 /mnt 目录
  • go:跳转到 /opt 目录
  • gs:跳转到 /srv 目录
  • gu:跳转到 /usr 目录
  • gv:跳转到 /var 目录
  • gr 或者 g/:跳转到 / 目录
gl
gL

如果当前条目是一个符号链接(有 -> 符号),那么跳转到它的原始位置。
cd :cd

选择条目

  Ranger 可以方便快速地选择多个条目(包括文件和文件夹)。

按键 说明
SPACE 选择/取消选择一个条目,之后光标会自动跳到下一个条目。不会因为切换目录而失效。
v 反选
V 开启/关闭视觉模式。在视觉模式下,移动光标即可选择条目。也可以按 uV 或者 ESC 退出。
uv 取消所有选择
  • 快速选择当前位置到顶端的所有条目:V + gg
  • 快速选择当前位置到底端的所有条目:V + G

删除条目

按键 说明
dD 或者 F8 删除条目(文件或者文件夹),或者 : + delete
DD 将条目移动到回收站里。

新建条目

按键 说明
F7 新建文件夹,等同于 :mkdir 
INSERT 新建文件,等同于 :touch 

查看以及编辑文件

按键 说明
i 或者 F3 调用 Pager 查看文件,与在终端中输入 pager + 文件名 一样。
E 或者 F4 调用默认编辑器编辑文件,可在终端中输入 select-editor 选择默认编辑器。

运行文件

  rifle.conf 是 Ranger 的文件打开工具。它可以作为独立的程序或者 Python 模块。它位于 ranger/ext/rifle.py。在与其他更简单的文件打开工具相比,Rifle 可以自动查找已安装的程序,以便在各种各样的系统中,有效地开箱即用。
  在 rifle.conf 中通过条件和命令的列表进行配置。默认情况下,只使用第一个匹配命令。在 Ranger 中,你可以通过键入 r,然后键入 RulenumberENTER 来选择打开工具。如果你单独使用 Rifle,你可以用 rifle -l 列出所有规则,然后输入 rifle -p<number> 选择相应的规则。

按键 说明
l 或者 ENTER 用默认程序运行文件
r 用指定程序打开文件,其中 0 是默认程序。

  如果没有选择文件的话,则打开光标处的文件。Ranger 根据 apps.py 里面的定义来判断用什么程序来打开相应的文件。如果用户目录里没有文件 apps.py 的话,可以从 ranger/defaults/apps.py 复制到 ~/.config/ranger/ 下面。
  如果 Ranger 不知道用什么程序打开相应文件,会出现 :open_with 对话框询问用户。也可以直接使用按键 r 打开 :open_with 对话框。:open_with 语法为:

:open_with Program Mode Flags
  • Program 需要在 apps.py 中定义,CustomApplications 中每一个以 app_ 开头的函数会被命令 :open_with 用到。
  • Mode 表示 Ranger 以何种模式运行程序。可用的 Mode 有:
    • 0:窗口模式
    • 1:全屏模式
  • Flags 表示指定 Ranger 以何种方式调用程序。
    • -f:Fork 进程(在后台运行)
    • -c:只运行当前文件,而不运行所选内容
    • -r:使用管理员权限运行应用程序(需要 sudo)
    • -t:在新的终端窗口运行应用程序

重命名

按键 说明
cw 重命名(含后缀名)
I 重命名,光标在最前
A 重命名,光标在最后(含后缀名)
a 重命名,光标在最后(不含后缀名)

复制

按键 说明
yy 或者 F5 复制
ya add 模式,添加光标处文件到复制队列中(文件夹无效)。
yr remove 模式,从复制队列中移除光标处文件(文件夹无效)。
yt toggle 模式,切换光标处文件是否在复制队列中(文件夹无效)。
yk 将光标处文件和上一文件添加到复制队列中(文件夹无效)。
yj 将光标处文件和下一文件添加到复制队列中(文件夹无效)。
ygg 将光标处到顶端的所有文件添加到复制队列中(文件夹无效)
yG 将光标处到底端的所有文件添加到复制队列中(文件夹无效)

剪切

按键 说明
dd 或者 F6 剪切
da add 模式,同复制。
dr remove 模式,同复制。
dt toggle 模式,同复制。
dk 同复制
dj 同复制
dgg 同复制
dG 同复制
ud 或者 uy 取消剪切

粘贴

按键 说明
pp 粘贴,默认 append 模式
pP append 模式,如果该目录中有同名条目,则在条目后面加上 __0_1……。如果条目是文件,则在文件后缀名后加入。
po overwrite 模式,如果该目录中有同名条目,则覆盖原来的条目。
pO append 模式 + overwrite 模式。
pl 粘贴为符号链接,不在状态栏显示目标条目的相对路径。
pL 粘贴为符号链接(相对路径),在状态栏显示目标条目的相对路径。
phl 粘贴为硬链接
pht 粘贴为硬链接的子目录(hardlinked subtree)

更改权限

增加权限列表(取消权限列表一样)

按键 说明
+ 显示增加权限列表
- 显示取消权限列表
= 输入数字赋予权限
  • u 表示该文件的拥有者(User),g 表示与该文件的拥有者属于同一个群体(Group)者,o 表示其他以外的人(Other),a 表示这三者皆是(All)。图片中左下角从左到右,第一个 d 代表文件夹,否则是 -,然后依次显示 ugorwx 权限。
  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • - 表示不具备任何权限,r 表示可读取(文件夹内可添加和删除文件),w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行,s 表示赋予程序 sudo 权限,t 表示该文件夹中能够添加文件但同时不能删除文件。
  • chmod ugo file,其中 r=4w=2x=1,则
    • 若要 rwx 属性则 4+2+1=7
    • 若要 rw- 属性则 4+2=6
    • 若要 r-x 属性则 4+1=5

标记

  标记是显示在文件名左侧的单个字符。你可以根据需要使用标记。按 t 可切换标签,按 ut 可删除所选内容的所有标记。默认标记是星号(*),但是你可以通过键入 " + Tag 来使用任何标记。

按键 说明
t 标记/取消标记条目,标记后光标下移,默认 *。文件与文件夹的标记颜色不同,不同文件也不同。
ut 取消标记
" + Tag Tag 标记条目,Tag 为任意字符,如 @。如果一个条目的标记为 @,那么键入 "@ 则取消标记,键入 t 或者 "# 则切换标记。

搜索

按键 说明
/ 打开搜索框,输入要搜索的字符串,回车后开始搜索。
f 查找,等同于运行满足条件的文件或者打开满足条件的文件夹。
zf 与命令行 filter 作用一样,只显示符合条件的条目,区分大小写。
n
N
查找下一个搜索结果
查找上一个搜索结果
c + 对应字母 通过对应属性依次遍历,如:
  • ca:通过 atime属性依次遍历
  • cc:通过 ctime 属性依次遍历
  • ci:通过 mimetype 属性依次遍历
  • cm:通过 mtime 属性依次遍历
  • cs:通过 size 属性依次遍历
  • ct:通过 tag 属性依次遍历
  • atime 表示:访问时间(access time)

  • ctime 表示:状态修改时间(change time)

  • mimetype 表示:MIME 类型(包括文本、图像、音频、视频以及其他应用程序专用的数据)

  • mtime 表示:内容修改时间(modify time)

  • size 表示:文件大小

  • tag 表示:标签

  • zf 删选完条目后,可以按 ^r 显示所有条目。

排序

按键 说明
o + 对应字母 通过对应属性排序,如:
  • oa:按 atime 属性正向排序
  • oA:按 atime 属性反向排序
  • ob:按 basename 属性正向排序
  • oB:按 basename 属性反向排序
  • oc:按 ctime 属性正向排序
  • oC:按 ctime 属性反向排序
  • oe:按 extension 属性正向排序
  • oE:按 extension 属性反向排序
  • om:按 mtime 属性正向排序
  • oM:按 mtime 属性反向排序
  • on:按 natural 属性正向排序
  • oN:按 natural 属性反向排序
  • os:按 size 属性正向排序
  • oS:按 size 属性反向排序
  • ot:按 type 属性正向排序
  • oT:按 type 属性反向排序
  • or:反向排序(Ranger 默认升序排列)
zs 排序是否区分大小写
  • basename 表示:文件名
  • extension 表示:
  • natural 表示:自然排序(A1 < A2 < A10,而不是 A1 < A10 < A2)
  • type 表示:文件后缀名

显示模式

按键 说明
Mf filename 模式(文件名 + 文件大小,文件夹显示文件数)
Mi fileinfo 模式(文件名,媒体文件显示更多信息,文件夹显示文件数)
Mm mtime 模式(文件名 + 最后修改时间)
Mp permissions 模式(权限信息 + 文件名)
Ms sizemtime 模式(文件名 + 文件大小 + 最后修改时间,文件夹显示文件数)
Mt metatitle 模式(文件名 + 文件大小,文件夹显示文件数)

书签

  你可以设置一个书签以便快速的进入某个目录。键入 m + Key 为当前目录添加书签,你可以通过键入 ` + Key 重新进入这个目录。Key 可以是任何字母或数字。每次跳转到书签时,键 ` 处的特殊书签将设置为最后一个目录,所以输入 `` 可以让你回到原来的位置。而且与 Vim 不同,这些书签是永久保存的。
  在 :cd 命令中,书签是可选的。注意:'(撇号)和 `(反勾号)是相同的。

按键 说明
m 或者 ` 或者 ' 显示书签页面
m + Key 将当前文件夹加入到书签中,用 Key 表示。
` + Key 或者 ' + Key 跳转到用 Key 表示的文件夹中。
`` 或者 '' 后退到上一个历史记录,同 H

标签页

  Ranger 支持多个标签页,可以快速地在多个标签页之间切换。

标签页

按键 说明
gn 或者 ^n 新建标签页
gc 或者 ^c 关闭当前标签页,如果是最后一个标签页,则不能被关闭。
gt 或者 TAB 或者 ^i 切换到下一个标签页
gT 或者 SHIFT + TAB 切换到上一个标签页
ALT + N 新建 N 的标签页,如果有,则切换到 N 标签页,其中 N 代表 1 - 9 的数字。
uq 重新打开最近一次关闭的标签页,可连续多次,重启 Ranger 后无效。

设置

按键 说明
zP 是否显示光标处文件夹内的文件
zc 当文件预览不可见时,是否应该折叠右栏,使主栏扩大。
zd 文件夹是否在文件前面
zh 是否显示隐藏文件,同 ^h
zI 每次按键后是否刷新输入。
zm 是否能用鼠标。如果能,则左键光标移动,右键打开,滚轮上下。
zp 是否预览文件(含图片)
zs 排序是否区分大小写
zu 是否自动更新状态栏上显示的该目录所有文件大小的值
zv 是否启用预览脚本
zi 是否预览图片

杂项

按键 说明
q 或者 Q 或者 ZQ 或者 ZZ 退出 Ranger
ESC 将模式改为正常模式,同 Vim 的操作。
S :shell $SHELL,打开终端并跳转到当前目录。
du 显示当前目录的磁盘占用情况
dU 显示当前目录的磁盘占用情况(按大小排序)
R 刷新当前目录
^r 刷新当前目录并清空缓存
^l 重画当前窗口
^c 终止
^h 是否显示隐藏文件,同 zh
~ 切换界面风格
} 横移:如果光标处是文件夹,则进入该文件夹;如果是文件,则光标移动到父文件夹的下一个兄弟文件夹中的第一个条目上,如果没有兄弟文件夹,则移动到父文件夹的父文件夹的下一个兄弟文件夹中的第一个条目上。

开启控制台界面

控制台界面

按键 说明
: 或者 ; 开启控制台界面,在此界面可以输入各种命令,命令和按键有相同的作用。
! 或者 s 等同于 :shell 
# 等同于 :shell -p ,将输出重定向到 Pager。
/ 等同于 :search ,搜索。
# 等同于 :shell 光标 %s,光标在 :shell%s 之间,表示对当前文件夹选择的文件进行操作。

开启日志界面

日志界面

按键 说明
W 开启日志界面

开启任务管理器界面

任务管理器界面

按键 说明
w 开启任务管理器界面

控制台界面

  在浏览器界面键入 : 等按键进入,ESC 等按键退出,界面如下:

控制台界面

历史

按键 说明
^p 或者 UP 上一条历史命令
^n 或者 DOWN 下一跳历史命令
TAB 或者 ^i
SHIFT + TAB
内置命令中的下一条命令
内置命令中的上一条命令

移动光标

按键 说明
LEFT 或者 ^f
RIGHT 或者 ^b
光标左移
光标右移
HOME 或者 ^a
END 或者 ^e
光标移动到 : 和命令间
光标移动到最后
ALT + LEFT
ALT + RIGHT
上一个单词
下一个单词

删除

按键 说明
^h 或者 bs 或者 BACKSPACE
^d 或者 DEL
删除光标前的字符
删除光标后的字符
^w
!d
向前删除单词
向后删除单词
^u
^k
删除光标前的所有字符
删除光标后的所有字符

杂项

按键 说明
^c 或者 ESC 关闭控制台界面
TAB 补全命令
ENTER 执行命令
^y 粘贴
^l 重画窗口

命令

  通过键入 ?c 就可以获取 Ranger 当前现有命令的列表。通过键入 TABSHIFT + TAB 就可以在 Ranger 控制台界面上选择现有命令。
  你可以在 ~/.config/ranger/commands.py 文件中加入你的自定义命令,比如:

# 获取 Command 类(必须)
from ranger.api.commands import *
# 可以导入任何需要的 Python 模块
import os

class my_edit(Command):
    # 命令介绍,按 ?c 打开命令列表可查看。
    """:my_edit <filename>

    A sample command for demonstration purposes that opens a file in an edit
    """

    # 命令实现代码
    def execute(self):
        if self.arg(1):
            target_filename = self.rest(1)
        else:
            target_filename = self.fm.thisfile.path
        self.fm.notify("Let's edit the file " + target_filename + "!")
        if not os.path.exists(target_filename):
            self.fm.notify("The given file does not exist!", bad=True)
            return
        self.fm.edit_file(target_filename)

    def tab(self, tabnum):
        return self._tab_directory_content()

  my_edit 类是 Command 的子类,会被作为命令自动集成到 Ranger 中,可以键入 :my_edit 启动默认的编辑器编辑选择的文件或文件夹。
  你可以参考 commands_full.py 中的默认的命令来搭建你自己的命令集。

Pager 界面

  在浏览器界面键入 i 等按键进入,q 等按键退出,界面如下:

Pager 界面

移动光标

按键 说明
j 或者 DOWN 或者 ENTER 或者 ^n
k 或者 UP 或者 ^p
h 或者 LEFT
l 或者 RIGHT
g 或者 HOME
G 或者 END
光标到顶端
光标到底端
p 或者 b 或者 PAGEUP 或者 ^b 光标向上移动一页
n 或者 f 或者 PAGEDOWN 或者 ^f 或者 SPACE 光标向下移动一页
u 或者 ^u 光标向上移动半页
d 或者 ^d 光标向下移动半页

杂项

按键 说明
F3 或者 ESC 或者 q 或者 Q 或者 i 退出
^l 重画窗口
E 编辑文件

任务管理器界面

  在浏览器界面键入 w 等按键进入,q 等按键退出,界面如下:

任务管理器界面

移动光标

按键 说明
j 或者 DOWN 或者 ENTER 或者 ^n
k 或者 UP 或者 ^p
g 或者 HOME
G 或者 END
光标到顶端
光标到底端
p 或者 b 或者 ^b 光标向上移动一页
n 或者 f 或者 ^f 或者 SPACE 光标向下移动一页
u 或者 ^u 光标向上移动半页
^d 光标向下移动半页

操作任务

按键 说明
dd 或者 DELETE 移除任务
J 或者 PAGEDOWN 任务下移(降低任务优先级)
K 或者 PAGEUP 任务上移(提高任务优先级)

杂项

按键 说明
^c 或者 ESC 或者 q 或者 Q 或者 w 退出
^l 重画窗口

鼠标操作

  Ranger 支持鼠标操作,包括左键、右键和滚轮。如果鼠标不能工作,在 Ranger 的浏览器界面键入 zm 开启鼠标功能。

左键

  • 点击主栏的条目,则光标跳转到条目上;
  • 点击左栏的父目录上的条目,则主栏跳转到父目录,并且光标跳转到刚才点击的条目上;
  • 点击右栏的子目录上的条目,则主栏跳转到子目录,并且光标跳转到刚才点击的条目上;
  • 点击右栏的预览窗口,则用系统默认的程序打开该文件;
  • 点击标签页,则跳转到相应的标签页;
  • 点击左上角的用户名,则跳转到 / 目录。

右键

  • 点击主栏文件夹,进入文件夹(左栏和右栏无效);
  • 点击文件,用默认程序运行文件;
  • 点击右栏的预览窗口,则用系统默认的程序打开该文件。

滚轮

  • 在主栏中,光标上下移动;
  • 在左栏中,切换文件夹,同 []
  • 右栏无效。

配置

  这一节列出了 Ranger 所有的内置设置。

配置文件

  首先复制配置文件到主目录:

ranger --copy-config=all

  然后自己到 ~/.config/ranger 中配置各种选项即可。

  其中每个文件代表:

文件名 内容
bookmarks 书签列表,可以在此文件里直接批量添加书签。
commands.py 用户自定义控制台命令,用 Python 编写。
commands_full.py Ranger 默认的控制台命令。
history 控制台命令的历史记录,默认 50 条,最后面的命令最新,需要重启 Ranger 才能更新文件。
rc.conf 主要的配置文件
rifle.conf 配置预览功能
scope.sh 预览脚本,键入zv 启动/关闭。
tagged 标记文件的绝对路径

  还有两个未显示的文件夹:

文件夹名 内容
colorschemes/ 颜色主题文件
plugins/ 插件文件夹

配置 Ranger

  所有的设置都在 ~/.config/ranger/rc.conf 中进行,或者用按键 z + 相应字母 切换配置。

外观

设置项 有效值 说明
column_ratios
  • 1,3,4(default)
  • 1,1,1,1
  • 5,3,1
  • 等等
设置浏览器界面有多少栏,比如 1,1,1 表示一共三栏,并且等宽,而 1,2 表示一共两栏,右栏宽度是左栏的两倍。
colorscheme
  • default
  • jungle
  • snow
选择颜色主题,snow 是单色主题,jungle 将文件夹的颜色从蓝色替换为绿色,以便在某些终端上更好地显示。
update_title
  • true
  • false(default)
是否设置窗口标题。
shorten_title
  • n (n ∈ Z+)
  • 0
如果窗口变大,是否修剪其标题。数字表示一次显示多少文件夹,默认 3,值为 0 表示关闭此功能。
tilde_in_titlebar
  • true
  • false(default)
是否用 ~ 代替在 Ranger 的标题栏上的 $HOME
unicode_ellipsis
  • true
  • false(default)
是否用 ... 代替 ~ 表示因为窗口过小而显示不全的文件名。
update_tmux_title
  • true
  • false(default)
是否在 Tmux 程序中将标题设置为 Ranger。
dirname_in_tabs
  • true
  • false(default)
是否在标签页显示文件夹名。
automatically_count_files
  • true(default)
  • false
是否在文件夹右边和状态栏上显示下一级的文件和文件夹总数。

栏目

设置项 有效值 说明
draw_borders
  • true
  • false(default)
是否为每个栏绘制边框。
line_numbers
  • true(default)
  • false
是否在主栏上显示行号。
display_size_in_main_column
  • true(default)
  • false
在主栏上显示文件大小。
display_tags_in_all_columns
  • true(default)
  • false
在所有栏中显示标记。

状态栏

设置项 有效值 说明
status_bar_on_top
  • true
  • false(default)
设置状态栏是否在顶端。
autoupdate_cumulative_size
  • true
  • false(default)
在状态栏右下角实时显示目录的累计大小。键入 dc 同效。
display_size_in_status_bar
  • true(default)
  • false
在状态栏显示文件大小。
draw_progress_bar_in_status_bar
  • true(default)
  • false
在状态栏中绘制进度条,该进度条显示支持进度条的所有当前运行任务的平均状态。

排序

设置项 有效值 说明
sort
  • atime
  • basename
  • ctime
  • extension
  • mtime
  • natural(default)
  • type
  • size
  • random
按什么原则排序,同 z + 相关字母
sort_directories_first
  • true(default)
  • false
排序时文件夹是否在文件前面。键入 zd 同效。
sort_case_insensitive
  • true(default)
  • false
排列是否区分大小写,如果是,则 aB 前面,即使 a 的 ASCII 值更大。键入 zc 同效。
sort_unicode
  • true
  • false(default)
当根据某个字符串进行排序时,是否应该比较 Unicode 字符,而不是查看原始字符值以节省时间。
sort_reverse
  • true
  • false(default)
反向排序,与 or 同效。

预览

设置项 有效值 说明
preview_files
  • true(default)
  • false
是否开启预览文件功能。键入 zp 同效。
preview_directories
  • true(default)
  • false
是否开启预览文件夹功能。键入 zP 同效。
use_preview_script
  • true(default)
  • false
是否采用预览脚本预览文件。键入 zv 同效。
preview_script
  • 预览脚本路径
  • none
设置预览脚本,默认 scope.sh。如果设置的文件不存在,或者设置 none,Ranger 将只打印内容来处理预览。
preview_images
  • true
  • false(default)
是否开启预览图片功能。键入 zi 同效。
preview_images_method
  • w3m(default)
  • iterm2
  • urxvt
  • urxvt-full
设置默认的图片预览程序。
collapse_preview
  • true(default)
  • false
当文件预览不可见时,是否应该折叠右栏,使主栏扩大。键入 zc 同效。
padding_right
  • true(default)
  • false
collapse_preview 处于开启状态且无预览结果时,是否保留右栏。如果是,则你可以单击右栏来运行文件。
preview_max_size
  • n (n ∈ Z+)
  • 0
设置预览文件大小的最大值(以字节为单位),使用值 0 禁用此功能,默认禁止。

版本控制

设置项 有效值 说明
vcs_aware
  • true
  • false(default)
是否收集和显示有关版本控制系统的数据。
vcs_backend_git
  • disabled
  • local
  • enabled(default)
设置版本控制的状态,disabled 表示不显示信息,local 表示只显示本地状态,enabled 表示显示本地和远程的状态,Hg 和 Bzr 比较慢。
vcs_backend_hg
  • disabled(default)
  • local
  • enabled
vcs_backend_git
vcs_backend_bzr
  • disabled(default)
  • local
  • enabled
vcs_backend_git

历史记录

设置项 有效值 说明
save_console_history
  • true(default)
  • false
设置退出 Ranger 时是否保存控制台历史记录。如果禁用,重新启动 Ranger 时将重置控制台历史记录。
max_console_history_size
  • n (n ∈ Z+)
  • none
控制台历史的数目最大值,默认 50 条,none 表示禁止记录。
max_history_size
  • n (n ∈ Z+)
  • none
目录更改历史的数目最大值,默认 20 条,none 表示禁止记录。

隐藏文件

设置项 有效值 说明
show_hidden
  • true
  • false(default)
是否显示隐藏文件。键入 zh 或者 ^h 同效。
hidden_filter
  • 正则表达式
用正则表达式选择哪些文件需要被隐藏,如 `set hidden_filter ^.

书签

设置项 有效值 说明
autosave_bookmarks
  • true(default)
  • false
立即保存书签,这有助于在多个 Ranger 实例之间同步书签,但会导致轻微的性能损失。如果为 false,则在退出 Ranger 时保存书签。
cd_bookmarks
  • true(default)
  • false
设置输入控制台命令 cd 时是否可以自动补全书签的地址。
show_hidden_bookmarks
  • true(default)
  • false
在书签预览窗口中显示 ` 文件。

鼠标

设置项 有效值 说明
mouse_enabled
  • true(default)
  • false
是否开启鼠标功能。键入 zm 同效。
show_cursor
  • true(default)
  • false
是否在终端显示鼠标箭头。

杂项

设置项 有效值 说明
confirm_on_delete
  • always
  • never
  • multiple(default)
运行 :delete 命令时是否要确认,用 multiple,Ranger 只会在你同时删除多个文件时询问你。
scroll_offset
  • n (n ∈ Z+)
滚动时,光标与下边界保持多少个空格的距离,默认值为 8
xterm_alt_key
  • true
  • false(default)
如果带 ALT 键的组合键对不起作用,则启用此选项。(尤其是在 Xterm 上)
clear_filters_on_dir_change
  • true
  • false(default)
如果设置为 true,则在离开目录时将清除筛选结果。
flushinput
  • true(true)
  • false
每次按键后是否刷新输入,一个优点是当用 j 向下滚动,如果你松开 j,会立即停止滚动。一个缺点是,当你盲目地输入命令时,一些键可能会丢失。键入 zI 同效。
idle_delay
  • 100n (n ∈ Z+)
Ranger 等待用户输入的延迟,以毫秒为单位,为 100 的整数倍。较低的延迟减少了目录更新之间的延迟,但增加了 CPU 负载,默认值为 2000
metadata_deep_search
  • true
  • false(false)
当元数据管理器模块查找元数据时,它应该只在当前目录中查找 .metadata.json 文件,还是应该深入搜索并检查当前目录之上的所有目录。

增强 Ranger 的功能

插件

  Ranger 的插件系统由 Python 文件组成,这些文件位于 ~/.config/ranger/plugins/ 中,在启动 Ranger 时按字母顺序导入。插件通过覆盖或扩展 Ranger 使用的函数来更改 Ranger 的行为。这允许您更改 Ranger 的几乎所有部分,但不能保证随着源代码的发展,将来的版本中还会继续工作。
  除非您知道自己在做什么,否则不应该简单地覆盖一个函数。相反,保存现有函数并从新函数调用它。这样,多个插件可以使用同一个钩子。在 /usr/share/doc/ranger/examples/ 目录中有几个示例插件。
  复制下面的代码,Python 文件名格式为 plugin_ + 插件名字 + .py,然后将文件复制到 ~/.config/ranger/plugins/ 中,最后重启 Ranger 即可生效。

状态栏显示欢迎语

# plugin_welcome.py
#
# Compatible with ranger 1.6.0 through 1.7.*
#
# This is a sample plugin that displays "Hello World" in ranger's console after
# it started.

# We are going to extend the hook "ranger.api.hook_ready", so first we need
# to import ranger.api:
import ranger.api

# Save the previously existing hook, because maybe another module already
# extended that hook and we don't want to lose it:
old_hook_ready = ranger.api.hook_ready

# Create a replacement for the hook that...

def hook_ready(fm):
    # ...does the desired action...
    fm.notify("Welcome to Ranger! Huang Pan")
    # ...and calls the saved hook.  If you don't care about the return value,
    # simply return the return value of the previous hook to be safe.
    return old_hook_ready(fm)

# Finally, "monkey patch" the existing hook_ready function with our replacement:
ranger.api.hook_ready = hook_ready

给条目添加类型符号

# plugin_devicon_linemode.py

import ranger.api
from ranger.core.linemode import LinemodeBase
from .devicons import *

@ranger.api.register_linemode
class DevIconsLinemode(LinemodeBase):
    name = "devicons"

    uses_metadata = False

    def filetitle(self, file, metadata):
       return devicon(file) + ' ' + file.relative_path

@ranger.api.register_linemode
class DevIconsLinemodeFile(LinemodeBase):
    name = "filename"

    def filetitle(self, file, metadata):
        return devicon(file) + ' ' + file.relative_path

  符号配置文件链接,必须下载。

挂载和卸载快捷键

# plugin_pmount.py
#
# Tested with ranger 1.7.2
#
# This plugin creates a bunch of keybindings used to mount and unmount
# the devices using pmount(1).
#
# alt+m       <letter>            <digit>: mount /dev/sd<letter><digit>
# alt+m       <uppercase letter>         : mount /dev/sd<letter>
# alt+shift+m <letter>            <digit>: unmount /dev/sd<letter><digit>
# alt+shift+m <uppercase letter>         : unmount /dev/sd<letter>
# alt+shift+n                            : list the devices

import ranger.api

MOUNT_KEY = '<alt>m'
UMOUNT_KEY = '<alt>M'
LIST_MOUNTS_KEY = '<alt>N'

old_hook_init = ranger.api.hook_init

def hook_init(fm):
    try:
        fm.execute_console("map {key} shell -p lsblk".format(key=LIST_MOUNTS_KEY))
        for disk in "abcdefgh":
            fm.execute_console("map {key}{0} chain shell pmount sd{1}; cd /media/sd{1}".format(disk.upper(), disk, key=MOUNT_KEY))
            fm.execute_console("map {key}{0} chain cd; chain shell pumount sd{1}".format(disk.upper(), disk, key=UMOUNT_KEY))
            for part in "123456789":
                fm.execute_console("map {key}{0}{1} chain shell pmount sd{0}{1}; cd /media/sd{0}{1}".format(disk, part, key=MOUNT_KEY))
                fm.execute_console("map {key}{0}{1} chain cd; shell pumount sd{0}{1}".format(disk, part, key=UMOUNT_KEY))
    finally:
        return old_hook_init(fm)
ranger.api.hook_init = hook_init

命令

  将下列代码复制到 commands.py 中:

from ranger.api.commands import *

from ranger.core.loader import CommandLoader

import os

class paste_as_root(Command):
    def execute(self):
        if self.fm.do_cut:
            self.fm.execute_console('shell sudo mv %c .')
        else:
            self.fm.execute_console('shell sudo cp -r %c .')



class mkcd(Command):
    """
    :mkcd <dirname>

    Creates a directory with the name <dirname> and enters it.
    """

    def execute(self):
        from os.path import join, expanduser, lexists
        from os import makedirs
        import re

        dirname = join(self.fm.thisdir.path, expanduser(self.rest(1)))
        if not lexists(dirname):
            makedirs(dirname)

            match = re.search('^/|^~[^/]*/', dirname)
            if match:
                self.fm.cd(match.group(0))
                dirname = dirname[match.end(0):]

            for m in re.finditer('[^/]+', dirname):
                s = m.group(0)
                if s == '..' or (s.startswith('.') and not self.fm.settings['show_hidden']):
                    self.fm.cd(s)
                else:
                    ## We force ranger to load content before calling `scout`.
                    self.fm.thisdir.load_content(schedule=False)
                    self.fm.execute_console('scout -ae ^{}$'.format(s))
        else:
            self.fm.notify("file/directory exists!", bad=True)

class fzf_select(Command):
    """
    :fzf_select

    Find a file using fzf.

    With a prefix argument select only directories.

    See: https://github.com/junegunn/fzf
    """
    def execute(self):
        import subprocess
        import os.path
        if self.quantifier:
            # match only directories
            command="find -L . \( -path '*/\.*' -o -fstype 'dev' -o -fstype 'proc' \) -prune \
            -o -type d -print 2> /dev/null | sed 1d | cut -b3- | fzf +m"
        else:
            # match files and directories
            command="find -L . \( -path '*/\.*' -o -fstype 'dev' -o -fstype 'proc' \) -prune \
            -o -print 2> /dev/null | sed 1d | cut -b3- | fzf +m"
        fzf = self.fm.execute_command(command, universal_newlines=True, stdout=subprocess.PIPE)
        stdout, stderr = fzf.communicate()
        if fzf.returncode == 0:
            fzf_file = os.path.abspath(stdout.rstrip('\n'))
            if os.path.isdir(fzf_file):
                self.fm.cd(fzf_file)
            else:
                self.fm.select_file(fzf_file)




class compress(Command):
    def execute(self):
        """ Compress marked files to current directory """
        cwd = self.fm.thisdir
        marked_files = cwd.get_selection()

        if not marked_files:
            return

        def refresh(_):
            cwd = self.fm.get_directory(original_path)
            cwd.load_content()

        original_path = cwd.path
        parts = self.line.split()
        au_flags = parts[1:]

        descr = "compressing files in: " + os.path.basename(parts[1])
        obj = CommandLoader(args=['apack'] + au_flags + \
                [os.path.relpath(f.path, cwd.path) for f in marked_files], descr=descr, read=True)

        obj.signal_bind('after', refresh)
        self.fm.loader.add(obj)

    def tab(self, tabnum):
        """ Complete with current folder name """

        extension = ['.zip', '.tar.gz', '.rar', '.7z']
        return ['compress ' + os.path.basename(self.fm.thisdir.path) + ext for ext in extension]

class extracthere(Command):
    def execute(self):
        """ Extract copied files to current directory """
        copied_files = tuple(self.fm.copy_buffer)

        if not copied_files:
            return

        def refresh(_):
            cwd = self.fm.get_directory(original_path)
            cwd.load_content()

        one_file = copied_files[0]
        cwd = self.fm.thisdir
        original_path = cwd.path
        au_flags = ['-X', cwd.path]
        au_flags += self.line.split()[1:]
        au_flags += ['-e']

        self.fm.copy_buffer.clear()
        self.fm.cut_buffer = False
        if len(copied_files) == 1:
            descr = "extracting: " + os.path.basename(one_file.path)
        else:
            descr = "extracting files from: " + os.path.basename(one_file.dirname)
        obj = CommandLoader(args=['aunpack'] + au_flags \
                + [f.path for f in copied_files], descr=descr, read=True)

        obj.signal_bind('after', refresh)
        self.fm.loader.add(obj)

与 Vim 集成

  将下面的代码复制到 ~/.vimrc 的最后面即可。启动 Vim 后,键入 , + r 或者用命令 :RangerChooser 打开 Ranger 选择文件打开(用 l 或者 ENTER)。

" Compatible with ranger 1.4.2 through 1.7.*
"
" Add ranger as a file chooser in vim
"
" If you add this code to the .vimrc, ranger can be started using the command
" ":RangerChooser" or the keybinding "<leader>r".  Once you select one or more
" files, press enter and ranger will quit again and vim will open the selected
" files.
function! RangeChooser()
    let temp = tempname()
    " The option "--choosefiles" was added in ranger 1.5.1. Use the next line
    " with ranger 1.4.2 through 1.5.0 instead.
    "exec 'silent !ranger --choosefile=' . shellescape(temp)
    if has("gui_running")
        exec 'silent !xterm -e ranger --choosefiles=' . shellescape(temp)
    else
        exec 'silent !ranger --choosefiles=' . shellescape(temp)
    endif
    if !filereadable(temp)
        redraw!
        " Nothing to read.
        return
    endif
    let names = readfile(temp)
    if empty(names)
        redraw!
        " Nothing to open.
        return
    endif
    " Edit the first item.
    exec 'edit ' . fnameescape(names[0])
    " Add any remaning items to the arg list/buffer list.
    for name in names[1:]
        exec 'argadd ' . fnameescape(name)
    endfor
    redraw!
endfunction
command! -bar RangerChooser call RangeChooser()
nnoremap <leader>r :<C-U>RangerChooser<CR>

自动挂载 U 盘

$sudo apt-get install usbmount
$sudo vim /etc/usbmount/usbmount.conf

  在 MOUNTOPTIONS 那行添加 user 即可使普通用户也对挂载的U盘拥有写权限,如下:

MOUNTOPTIOS="rw,user,noatime,nodiratime"

其他好用的终端文件管理器

mc

简介

mc

  mc 全称 GNU Midnight Commander,它是一个功能丰富的全屏文本模式应用程序,允许您复制,移动和删除文件和整个目录树,搜索文件并在子shell中运行命令。包括内部查看器和编辑器。mc 基于多种文本界面,例如 Ncurses 或 S-Lang,它允许它在常规控制台,X Window 终端内,SSH 连接和各种远程 Shell 上工作。

特点

  • Built in Virtual File System: manipulate remote file systems through the FTP and SMB protocols or over secure shell, browse contents of tar, ar, rpm, zip, cpio, lha and rar archives just like local files.
  • Almost all operations work with the virtual file system, enabling you to do complex tasks, like viewing files in archives on an FTP server.
  • Mouse support on most terminal emulators for X Window System as well as on the Linux console.
  • Learn Keys: GNU Midnight Commander may be configured at run time to support any kind of input keys for a given terminal, making its operation possible even on most weird terminals.
  • Text and hex editors are available for you to use (hex editor is a part of the viewer).
  • Hotlist allows you to keep a list of common visited locations, including remote sites and directories inside archives.
  • Command completion: By pressing Alt-Tab in any place where a filename or an executable are expected, GNU Midnight Commander will complete the name for you. If you press Alt-Tab for the second time, you get a list box with all possible completions.
  • Subshell support: Run your commands by a real shell interpreter. GNU Midnight Commander interacts with bash, tcsh and zsh to provide you with all of the facilities available in your preferred shell.
  • Find file command can search for the file contents.
  • Background operations allow you to copy or move files from any virtual file system while you do other tasks (i.e., you can do background FTP copies).
  • FTP proxy is supported.
  • Linux file recovery: If you are using Linux, you can recover deleted files from an ext2 or ext3 partition with the undelete file system. This is a low level file recovery function that can recover files deleted by any program on Linux.
  • External panelization: You can run any arbitrary external command and GNU Midnight Commander will display the output generated as a file listing that can be manipulated as a regular directory.
  • Emacs-like key bindings are used in all widgets.
  • Context dependent actions (open, view, edit) are available.
  • The built-in file viewer, together with the context dependent actions is used to format man pages on the fly, coloring mail messages and more.
  • The built-in editor supports syntax highlighting and external actions, such as spell checking and formatting.

GitHub 项目地址

  GitHub 项目地址

nnn

简介

nnn

  nnn 是一个功能齐全的终端文件管理器,它非常轻便和快速(性能)。nnn 也是一个磁盘使用分析程序、一个模糊应用程序启动程序、一个批处理文件重命名器和一个文件选择器。
  nnn 在 Raspberry PI、Android 上的 Termux、Linux、MacOS、BSD、Cygwin 和 Windows 的 Linux 子系统上运行平稳。nnn 与 DEs、GUI 等实用程序无缝工作。它几乎是零配置(具有合理的默认值),可以在5分钟内设置。
  可以使用自定义键绑定运行插件,有一个独立的(NEO)Vim 插件,而且自定义插件很容易添加。

特点

  • Modes
    • Detail (default), light
    • Disk usage analyzer (block/apparent)
    • File picker, (neo)vim plugin
  • Navigation
    • Navigate-as-you-type with dir auto-select
    • 4 contexts (aka tabs/workspaces)
    • Bookmarks; pin and visit a directory
    • Familiar, easy shortcuts (arrows, ~, -, @)
    • Change directory at exit (easy shell integration)
  • Sorting
    • Ordered pure numeric names by default (visit /proc)
    • Case-insensitive version (aka natural) sort
    • Sort by file name, modification time, size, file extension
  • Search
    • Instant filtering with search-as-you-type
    • Regex and substring match
    • Subtree search to open or edit files (using plugin)
  • Mimes
    • Open with desktop opener or specify a custom app
    • Create, list, extract archives
    • Option to open all text files in EDITOR
  • Information
    • Detailed file information
    • Media information (needs mediainfo/exiftool)
  • Convenience
    • Minimal configuration
    • Plugin keybinds
    • Select files across dirs; all/range selection
    • Copy, move, delete, archive, link selection
    • Batch rename selection or dir entries
    • FreeDesktop compliant trash (needs trash-cli)
    • SSHFS mounts (needs sshfs)
    • Create, rename, duplicate files and directories
    • Per-context directory color (default: blue)
    • Spawn a shell, run apps, run commands, execute file
    • Take quick notes, lock terminal (needs a locker)
    • Shortcut reference a keypress away
  • Unicode support
  • Follows Linux kernel coding style
  • Highly optimized, static analysis integrated code
  • Minimal library dependencies
  • Widely available

GitHub 项目地址

  GitHub 项目地址

fff

简介

  fff 全称 Fucking Fast File-Manager,这是一个完全成熟的终端文件管理器,它作为一个实验开始,并成为最好的终端文件管理器之一,fff 是一个用 Bash 编写的简单终端文件管理器。

特点

  • It’s Fucking Fast rocket
  • Minimal (only requires bash and coreutils)
  • Smooth Scrolling (using vim keybindings)
  • Works on Linux, BSD, macOS, Haiku etc.
  • Supports LS_COLORS!
  • File Operations (copy, paste, cut, ranger style bulk rename, etc) img
  • Instant as you type search
  • Tab completion for all commands!
  • Automatic CD on exit (see setup)
  • Works as a file picker in vim/neovim (link)!
  • Display images with w3m-img!
  • Supports $CDPATH.

GitHub 项目地址

  GitHub 项目地址

lf

简介

lf

  lf 全称 list files,是一个用 Go 编写的终端文件管理器。它深受 Ranger 的启发,有一些额外的功能。

特点

  • 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.)

GitHub 项目地址

  GitHub 项目地址


   转载规则


《Ranger 用法总结》 Huang Pan 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录