1

我希望能够在 vim 中编辑(使用 )时回到我的终端会话:sh,cd 进入其他目录,然后打开另一个文件,但在我之前所在的同一个 vim 会话中。即,如果我在终端中“退出”,我想回到 vim 以:ls显示两个缓冲区。

目前,如果 I :sh, vim newfile,我进入 vim 但:ls只显示新文件。

有没有办法将新文件添加到上一个会话而不是开始一个新文件?

(注意:我对 vim 术语不太熟悉。“会话”是指具有我以前的缓冲区的 vim 实例)。

4

3 回答 3

4

您无需返回 shell 即可打开其他文件::edit, :split, :vsplit,:tabedit所有这些都允许您从磁盘上的任何位置编辑文件(并使用制表符完成):

:sp ../../path/to/file

您可以使用wildmenu,wildmodewildignorecase选项使其变得更好。

您还可以使用内置的 Netrw 插件,通过稍微舒适的“图形”资源管理器浏览您的文件系统(请参阅 参考资料:help netrw):

:Ex
:Tex /path/to/

此外,:shell打开一个的shell,它很可能对你的初始 Vim 会话没有太多了解,因此无法与之交谈。

于 2013-11-10T12:05:15.920 回答
3

当您进入一个子shell:sh并调用Vim 时,这将是一个全新的实例。你可以做的是使用客户端-服务器通信启动原始 Vim :

$ vim --servername main

不幸的是,当你进入一个带有 的子shell 时:sh,原来的 Vim 被挂起,你不能和它通信。您必须生成另一个外壳,例如在另一个终端或屏幕拆分中。如果您现在想在原始 Vim 中编辑另一个文件,请使用 Vim 的客户端-服务器通信在此处打开它:

$ vim --servername main --remove newfile.txt
于 2013-11-10T12:43:55.543 回答
2

您可以使用:tabedit filenamegttp move 移动标签。

cntl+z将 vim 置于后台,您可以正常使用您的 shell。让 vim 回来。使用命令fg

于 2013-11-10T11:48:25.383 回答