有时,在深度嵌套的文件层次结构(例如 Java 代码)中工作时,我发现从一片叶子遍历到另一片叶子很烦人。我通常的 CD 看起来像:
$ cd ../../..
# Oops, not enough
$ cd ..
# one more
$ cd ..
如果我想编辑文件,我可以vim dir
交互式地打开所需的文件。
是否有一些实用程序允许交互式更改目录?探索者/指挥官(mc
, vifm
)对于这样的任务来说太重了。
我已经在互联网上搜索过,但我的关键字似乎没有返回任何相关内容。
添加以澄清:
我正在寻找一个实用程序(让我们称之为它vcd
),它向我提供一个交互式目录树,我可以遍历它并选择 cd 的位置。
从用户的角度vim .
来看,假设vcd
最终执行vim $filename
。我想要类似的功能(目录浏览器),只是最后CWD
更改为交互式选择的目录。我希望这能让我的意图更加明确。
答案1
尝试FZF-FS。
安装弗兹夫:
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
重新分配您的资源~/.bashrc
:. ~/.bashrc
克隆fzf-fs
:git clone https://github.com/D630/fzf-fs ~/fzf-fs
添加~/fzf-fs
到您的PATH
:PATH=$PATH:~/fzf-fs
Runfzf-fs --init
定义一个别名:alias vcd='. fzf-fs'
Runvcd ~
您应该看到类似这样的内容:
用 选择目录Enter,使用模糊搜索,键入[q]
退出。
也可以看看:fzf-fs 用法,fzf-fs 不支持文件名中的换行符固定为cd
!
答案2
答案3
DM
就像DOS 时代的 PC Magazine 一样……我不知道 Linux 上有类似的程序,但我很喜欢xd
用于目录导航;函数定义为
xd() {
cd "$(/usr/bin/xd "$@")"
}
例如,您可以输入
xd /ulb
它将打印所有匹配/u*/l*/b*
(/usr/lib/binfmt.d
,/usr/local/bin
...)的目录的列表,要求您选择一个并更改为它。
答案4
您可以使用恩恩文件管理器以交互方式浏览并选择目录。
您可以将其配置为在退出时更改为所选目录(按 Ctrl+G 或始终按时)。
从misc/quitcd 中选择适合您的shell 的文件,并将内容添加到您的shell 的rc 文件中。您需要生成一个新的 shell 才能使更改生效。您应该将 nnn 开头为 n (或您首选的函数名称/别名)。
默认情况下,当按下 ^G 时,nnn 将最后一个工作目录写入
${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd
要始终退出时 cd,请将环境变量 NNN_TMPFILE 设置为您的首选文件路径。
退出时 cd 的额外键 ^G 是为了避免每次 nnn 退出时写入文件,并允许退出时按需 cd