Vim打开文件后:sh

时间:2013-11-10 11:43:24

标签: vim

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

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

是否有办法将新文件添加到上一个会话而不是启动新文件?

(注意:我对vim术语不太熟悉。“session”我的意思是vim的实例,它有我以前的缓冲区。)

3 个答案:

答案 0 :(得分:4)

您无需返回shell打开其他文件::edit:split:vsplit:tabedit都允许您从任何地方编辑文件在你的磁盘上(和tab完成):

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

您可以使用wildmenuwildmodewildignorecase选项来提高效果。

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

:Ex
:Tex /path/to/

此外,:shell会打开一个 new shell,它很可能不会对您的初始Vim会话有太多了解,因此无法与之通话。

答案 1 :(得分:3)

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

$ vim --servername main

不幸的是,当您使用:sh进入子shell时,原始Vim将被暂停,您无法与之通信。你必须产生另一个shell,例如在另一个终端或屏幕拆分。如果您现在想要编辑原始Vim中的另一个文件,请使用Vim的客户端 - 服务器通信在那里打开它:

$ vim --servername main --remove newfile.txt

答案 2 :(得分:2)

你可以使用:tabedit filename而不是gt tp move move through tabs。

cntl + z 将vim放在后台,你可以照常使用你的shell。让vim回来。使用命令fg