Posso abrir um arquivo em uma instância existente do Vim a partir de um comando externo?

20

Alguns aplicativos têm a noção de uma "sessão" , na qual você pode executar um comando para carregar um arquivo em uma instância existente de um aplicativo.

Por exemplo, quando eu digito:

$ firefox http://vi.stackexchange.com

O Firefox reutiliza um processo existente do Firefox, em vez de criar um novo.

Isso é possível com o Vim?

ideasman42
fonte

Respostas:

22

Você precisa compilar o vim +clientservere, em seguida, pode usar o comando vim --servername SERVERpara iniciar uma instância do vim e vim --servername SERVER --remote FILEabrir o arquivo na instância nomeada do vim.


apenas macOS

O MacVim executa um servidor por padrão - você pode mvim --remote-tab-silentabrir um arquivo em uma nova guia na sua instância existente do MacVim ou mvim --remote-silentabrir o arquivo em um novo buffer na mesma guia.

craigp
fonte
4

Embora a resposta do @ craigp esteja correta, achei mais conveniente simplesmente adicionar --remote-silentsem se preocupar com os nomes dos servidores
(isso pressupõe que você não queira resolver instâncias nomeadas do vim) .

Isso iniciará o servidor ou usará um, caso ainda não tenha sido iniciado.

Pode ser chamado assim:

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

por exemplo:

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

Acabei precisando usar um método diferente de mover o cursor por causa dessa inicialização remota.

ideasman42
fonte