nnn

出自 ArchWiki

nnn(也风格化为 n³)是一个用 C 编写的可移植终端文件管理器。它通过其扁平文本插件系统易于扩展,您可以在其中添加自己的语言无关脚本以及已有的插件,包括一个 (neo)vim 插件。

nnn 具有原生归档/解压缩到常用安装格式(如 xz)和从常用安装格式归档/解压缩的功能、磁盘使用情况分析和模糊应用启动器、批量文件重命名器以及通过其插件架构实现的文件选择器。nnn 支持即时随键入即搜索,带有正则表达式(或简单字符串)过滤器,以及随键入即导航模式,用于在过滤器模式下连续导航,并自动选择目录。还支持上下文、书签、多种排序选项、SSHFS、对所选内容(一组选定的文件)的批量操作等等。

尽管 nnn 功能强大,但其设计易于使用,并通过环境变量进行配置,而无需使用配置文件。

安装

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

用法

nnn 可以使用类似 vi- 的键 hjklarrow keys 进行控制。不必死记硬背按键:箭头键、/q 就足够了。随时按下 ? 以获取键盘快捷键的帮助。

配置

nnn 通过环境变量进行配置。有关这些设置的详细信息,请参阅 nnn(1) 以及 nnn wiki

NNN_BMS='d:~/Documents;u:/home/user/Cam Uploads;D:~/Downloads/'
NNN_SSHFS="sshfs -o follow_symlinks"        # make sshfs follow symlinks on the remote
NNN_COLORS="2136"                           # use a different color for each context
NNN_TRASH=1                                 # trash (needs trash-cli) instead of delete
注意: 如果您通过从 显示管理器 启动的桌面环境中的 nnn.desktop 启动 nnn,则可能不会加载 .bashrc。在这种情况下,请参阅上游关于 桌面集成 的说明。

更有用的设置之一是 NNN_BMS 变量,它允许您选择快捷方式以快速跳转到您书签的目录。它们通过 b 键,后跟您指定的字母之一来访问。在示例配置中,按键 bD 将导致 nnn 跳转到 ~/Downloads。但所有这些都是可选的,nnn 在您的所有机器上都将始终如一地运行。

在终端中获取选定的文件

要获取您在 nnn 中选择的文件列表,可以创建以下别名

~/.bashrc
alias ncp="cat ${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} | tr '\0' '\n'"

稍后可以将其用于将选定的文件通过管道传输到其他工具。

在 nnn shell 中指示深度级别

如果您使用 ! 在当前目录中启动 shell,则最好添加

~/.bashrc
[ -n "$NNNLVL" ] && PS1="N$NNNLVL $PS1"

为了让您的提示符指示您位于一个 shell 中,该 shell 将在您完成操作后返回到 nnn

这与#退出时 cd (Ctrl-G) 结合使用将成为一个强大的组合。

退出时 cd (Ctrl-G)

将以下内容添加到您的 .bashrc/.zshrc

~/.bashrc or ~/.zshrc
if [ -f /usr/share/nnn/quitcd/quitcd.bash_sh_zsh ]; then
    source /usr/share/nnn/quitcd/quitcd.bash_sh_zsh
fi

并运行 n 命令而不是 nnn(更准确地说,是 n bash 函数)。

另请参阅 nnn wiki

添加您自己的插件

您可以通过将自己的插件放入 ${XDG_CONFIG_HOME:-$HOME/.config}/nnn/plugins 来运行它们。例如,您可以创建一个可执行的 shell 脚本

${XDG_CONFIG_HOME:-$HOME/.config}/nnn/plugins/git-changes
#!/usr/bin/env sh
git log -p -- "$@"

设置环境变量 NNN_PLUG='R:git-changes',然后通过按 ;R 并选择 git-changes 来触发它,这将方便地显示特定文件的 git 更改日志以及代码,以便快速轻松地查看。

参见