如何在VIm和终端机中始终保持相同的当前目录?

tom*_*nek 5 unix vim vim-plugin

我想我的终端当前目录遵循我的VIM。

例:

在终端:

> pwd
=> /Users/rege
> vim
Run Code Online (Sandbox Code Playgroud)

然后在VIM中

:cd /Users/rege/project
<Ctrl-z>(for suspend)
Run Code Online (Sandbox Code Playgroud)

在终端

> pwd
=> /Users/rege/project
Run Code Online (Sandbox Code Playgroud)

我正在使用MacOS,zsh,tmux。

我需要这个,因为当我试图在VIM中使用标签时,标签是从我的终端目录而不是vim中签入项目的。

因此,当我更改VIM当前目录时,总是需要更改终端当前目录。

rom*_*inl 2

暂停 Vim 后,您会在 shell 中发出什么样的命令?Vim 还不够吗:!command

使用set autochdir,当您从一个文件跳转到另一个文件时,Vim 的当前目录会跟随您。通过此设置,简单的将始终在当前文件的目录中:!ctags -R .创建一个文件。tags

另一个有用的设置是set tags=./tags,tags;$HOME告诉 Vim 在当前文件的目录中查找tags文件,然后在“当前目录”中查找,直到到达您的~/. 您可以修改端点以满足您的需要。tags这允许您在编辑属于项目的任何文件时在项目的根目录中使用 a 。

所以,基本上,你可以在不离开 Vim 的情况下走很长的路。

如果您确实需要返回 shell 来发出命令,:shell(或:sh) 使用 Vim 的当前目录启动一个新 shell。完成后,您只需$ exit返回 Vim:

$ pwd
/home/romainl
$ vim
:cd Projects
:sh
$ pwd
/home/romainl/Projects
$ exit
Run Code Online (Sandbox Code Playgroud)