vim netrw 退出后更新当前工作目录

问题描述 投票:0回答:4

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

浏览目录
$ vim . 

从而打开vim netrw。
现在我正在使用 netrw 浏览目录。
我想要的是,当我退出 vim netwr 时,我希望我以前的当前工作目录(在本例中为主目录)现在成为我之前在 vim netrw 中的目录。
示例:
步骤1.现在在主目录中
步骤2.vim. (从而打开 vim netrw)
步骤3.进入任意目录(~/my/other/folders)
步骤 4. :q (退出 vim)
步骤5。(在这里,我希望我以前的目录现在变成~/my/other/folders

关于如何做到这一点有什么想法吗?我正在考虑在 .vimrc 中做一些事情,但我不知道如何做。谷歌搜索,但没有发现任何有价值的东西。

unix vim
4个回答
3
投票

一个可能的解决方案是在 netrw 中按

c
更改当前工作目录,并通过发出
:shell

从您所在的文件夹中生成一个新的 shell

所以它看起来像:

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

您就位于 netrw 中当前文件夹的 shell 中。

当您退出该 shell 时,您将返回到 netrw 中的位置并可以继续使用资源管理器。


2
投票

我认为这根本不可能。通过

system('command')
:!command
执行的每个命令都是通过子 shell 执行的,而不是通过启动 Vim 的 shell 执行,所以我不知道如何以任何方式更改主机 shell。

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

您是否希望能够对您刚刚编辑的文件执行一些命令并且您希望位于其目录中?如果有的话,你知道

:sh
吗?
:!command

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


2
投票

要添加到 Wadih 的答案,您可以将其放入您的

.vimrc
文件中:

let g:netrw_keepdir=0

这意味着工作目录将自动更新,您无需每次都按

c

因此,导航到 netrw 中的文件夹后,您需要做的就是执行以下操作:

:sh

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

来自 netrw 帮助文件:

默认情况下,g:netrw_keepdir 为 1。该设置表示当前 目录不会跟踪浏览目录。 (向后完成 与 v6 的文件浏览器兼容)。

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


0
投票

您可以使用以下方法复制当前的 Netrw 路径

:norm 3G5|"+y$

然后退出[

SHIFT
+
Z
+
Q
],换成
cd 
[
CTRL
+
V
][
ENTER
]。

为此,您还需要设置 (n)vim 离开后不清除剪贴板

附注我在这里亲身实践了解了什么是 XY 问题。

© www.soinside.com 2019 - 2024. All rights reserved.