跳转至内容

nnn

来自 ArchWiki

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

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

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

安装

安装 nnn 软件包。

用法

nnn 可以使用类似 vi 的键 hjkl箭头键 来控制。无需记住所有按键:箭头、/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 可能未被sourced。在这种情况下,请参阅上游关于桌面集成的说明。

一个非常有用的设置是 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 shells 中指示深度级别

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

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

以便您的提示符指示您处于一个 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 更改日志以及代码,以便快速轻松地进行审查。

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.