某些应用程序具有“会话”的概念,您可以在其中运行命令以将文件加载到应用程序的现有实例中。

例如,当我键入以下内容时:

$ firefox http://vi.stackexchange.com


Firefox重新使用了现有的Firefox进程,而不是创建一个新的进程。

Vim是否可以?

#1 楼

您需要使用+clientserver编译的vim,然后可以使用以下命令:

vim --servername SERVER启动一个vim实例,并使用

vim --servername SERVER --remote FILE在命名的vim实例中打开文件。


仅macOS

MacVim默认运行服务器-您可以使用

mvim --remote-tab-silent在以下位置的新选项卡中打开文件您现有的MacVim实例,或

mvim --remote-silent以在同一选项卡的新缓冲区中打开文件。

评论


如果您要在不支持--servername的NeoVim中进行此操作,请通过执行pip3 install neovim-remote来安装Neovim-Remote,然后可以从单独的shell中执行nvr --remote filename.txt,以在另一个外壳中打开文件名,或者从vim内的:terminal缓冲区使用nvr -l filename.txt来打开另一个缓冲区中的文件(而不是像否则那样在vim中打开vim)。同样,可以将git配置为使用调用它的vim实例,而不是在vim中生成vim。

– TamaMcGlinn
20-3-26在11:03



#2 楼

虽然@craigp的答案是正确的,但我发现只需添加--remote-silent而不用担心服务器名称(这是假设您不想寻址命名的vim实例)最为方便。

这将启动服务器。 ,或者如果尚未启动则使用它。

可以这样称呼:

gvim --remote-silent '+cal cursor(line,col)' some_file


例如:

gvim --remote-silent '+cal cursor(102,4)' src/code.c


由于这种远程初始化,我最终需要使用另一种移动光标的方法。