我希望能够在 vim 中编辑(使用 )时回到我的终端会话:sh
,cd 进入其他目录,然后打开另一个文件,但在我之前所在的同一个 vim 会话中。即,如果我在终端中“退出”,我想回到 vim 以:ls
显示两个缓冲区。
目前,如果 I :sh
, vim newfile
,我进入 vim 但:ls
只显示新文件。
有没有办法将新文件添加到上一个会话而不是开始一个新文件?
(注意:我对 vim 术语不太熟悉。“会话”是指具有我以前的缓冲区的 vim 实例)。
我希望能够在 vim 中编辑(使用 )时回到我的终端会话:sh
,cd 进入其他目录,然后打开另一个文件,但在我之前所在的同一个 vim 会话中。即,如果我在终端中“退出”,我想回到 vim 以:ls
显示两个缓冲区。
目前,如果 I :sh
, vim newfile
,我进入 vim 但:ls
只显示新文件。
有没有办法将新文件添加到上一个会话而不是开始一个新文件?
(注意:我对 vim 术语不太熟悉。“会话”是指具有我以前的缓冲区的 vim 实例)。
您无需返回 shell 即可打开其他文件::edit
, :split
, :vsplit
,:tabedit
所有这些都允许您从磁盘上的任何位置编辑文件(并使用制表符完成):
:sp ../../path/to/file
您可以使用wildmenu
,wildmode
和wildignorecase
选项使其变得更好。
您还可以使用内置的 Netrw 插件,通过稍微舒适的“图形”资源管理器浏览您的文件系统(请参阅 参考资料:help netrw
):
:Ex
:Tex /path/to/
此外,:shell
打开一个新的shell,它很可能对你的初始 Vim 会话没有太多了解,因此无法与之交谈。
当您进入一个子shell:sh
并调用Vim 时,这将是一个全新的实例。你可以做的是使用客户端-服务器通信启动原始 Vim :
$ vim --servername main
不幸的是,当你进入一个带有 的子shell 时:sh
,原来的 Vim 被挂起,你不能和它通信。您必须生成另一个外壳,例如在另一个终端或屏幕拆分中。如果您现在想在原始 Vim 中编辑另一个文件,请使用 Vim 的客户端-服务器通信在此处打开它:
$ vim --servername main --remove newfile.txt
您可以使用:tabedit filename
比gt
tp move 移动标签。
还cntl+z将 vim 置于后台,您可以正常使用您的 shell。让 vim 回来。使用命令fg