4

这是场景。
我在 unix 命令行上(在主目录中)。我想通过浏览目录

$ vim . 

从而打开vim netrw。
现在我正在使用 netrw 浏览目录。
我想要的是,当我退出 vim netwr 时,我希望我以前的当前工作目录(在这个例子中是主目录)现在成为我以前在 vim netrw 中的目录。
示例:
步骤 1. 现在在主目录中
步骤 2. vim 。(因此打开 vim netrw)
第 3 步。转到任何目录(~/my/other/folders)
第 4 步。:q(退出 vim)
第 5 步。(在这里,我希望我以前的目录现在变成 ~/my/其他/文件夹

关于如何做的任何想法?我想在 .vimrc 中做点什么,但我不知道怎么做。进入谷歌搜索,但没有发现任何有价值的东西。

4

3 回答 3

3

一个可能的解决方案是在 netrw 中通过按 更改当前工作目录c,并通过发出从您所在的文件夹生成一个新 shell:shell

所以它看起来像:

vim .
Navigate to the desired folder...
c
:shell

你在netrw中的当前文件夹中的shell中。

当你退出那个 shell 时,你会回到你在 netrw 中的位置,并且可以继续使用资源管理器。

于 2018-04-29T18:40:43.463 回答
2

我认为这根本不可能。system('command')通过或通过子 shell 执行的每个命令:!command,而不是通过启动 Vim 的 shell,所以我看不出如何以任何方式更改主机 shell。

但我在这里闻到了一个 XY 问题。你的目标是什么?

您是否希望能够对刚刚编辑的文件执行某些命令并且希望位于它们的目录中?如果是这样,你知道:sh吗?:!command?

你想要你的 shell 的“图形”文件浏览器吗?如果是这样,你知道vifm吗?游侠午夜指挥官

于 2013-03-18T06:08:54.633 回答
2

要添加到 Wadih 的答案,您可以将其放入.vimrc文件中:

let g:netrw_keepdir=0

这意味着工作目录将自动更新,您无需c每次都按。
因此,在导航到 netrw 中的文件夹后,您需要做的就是执行以下操作:

:sh

这将在当前文件夹中打开终端。

从 netrw 帮助文件:

默认情况下,g:netrw_keepdir 为 1。这个设置意味着当前目录不会跟踪浏览目录。(这样做是为了向后兼容 v6 的文件资源管理器)。

设置 g:netrw_keepdir 为 0 告诉 netrw 让 vim 的当前目录跟踪 netrw 的浏览目录。

于 2019-12-08T22:35:56.270 回答