Tornando o gvim 'instance-only'

6

Eu quero que o gvim seja 'somente instância', ou seja, saiba de uma opção ou algo que abra o arquivo como uma guia na minha instância gvim já aberta em vez de abrir uma nova.

Exemplo para esclarecer: suponha que eu tenha uma janela gvim aberta com um arquivo, module1.c. Supondo que eu esteja em um terminal, qual comando devo inserir para que o 'module2.c' abra na mesma janela que agora tem module1.c?

PS: Estou ciente de que há uma opção -p que me permite abrir vários arquivos em várias guias. Mas o que estou procurando é uma maneira de abrir uma nova aba de OUTSIDE gvim DEPOIS que já está rodando.

Como fazer isso? É mesmo possível?

    
por Rafael Almeida 28.09.2009 / 01:47

2 respostas

7

Eu quero que o gvim seja 'somente instância', isto é, saiba de uma opção ou algo que abra o arquivo como uma guia na minha instância gvim já aberta em vez de abrir uma nova.

Permita-me esclarecer algo aqui ... no vim, as guias não são o que as pessoas esperariam que fossem. Na maioria dos programas eles são uma "instância" de um arquivo (uma aba / um arquivo), mas no vim eles são apenas um "ponto de vista" no qual você pode ter várias janelas vim, cada uma segurando o que você colocar nela. p>

Vim, ao abrir um arquivo, abre-o em um buffer. Um buffer para cada arquivo. Você pode ver a lista de buffers abertos com

:ls

Exemplo para esclarecer: suponha que eu tenha uma janela gvim aberta com um arquivo, module1.c. Supondo que eu esteja em um terminal, qual comando devo inserir para que o 'module2.c' abra na mesma janela que agora tem module1.c?

Mais uma vez, temos um problema de terminologia. Por uma questão de discussão, eu suponho que você quer dizer "janela" como em uma janela do Windows, e não uma janela interna do vim. Se você deseja abrir um arquivo em uma instância gvim já aberta, tente

gvim first_file.dat
gvim --remote-tab second_file.dat

Isso pode ser facilmente reduzido colocando-o em um arquivo .bat (se você estiver no windows), e então você não precisa digitar a parte "--..." repetidas vezes.

PS: Estou ciente de que há uma opção -p que me permite abrir vários arquivos em várias guias. Mas o que eu estou procurando é uma maneira de abrir uma nova aba de OUTSIDE gvim AFTER já está em execução.

Interessante, eu não sabia sobre isso:)

Como fazer isso? É mesmo possível?

Diga se é isso que você estava procurando.

    
por 28.09.2009 / 03:03
3

O Vim pode fazer isso quando executado no modo clienterver, se ele foi compilado com a opção + clientserver .

Inicie a primeira instância de vim com a opção - servername :

gvim --servername FILES --remote-silent file.txt

Agora, você pode abrir mais arquivos nesta instância, fornecendo - servername , ou apenas com a opção - remote .

gvim --remote file2.txt

gvim --servername FOOBAR --remote file3.txt

Extraído da documentação do manual do vim no modo clienterver . Afaik, os novos arquivos são abertos como buffers na guia ativa. Não tenho certeza se o vim pode ser configurado para abrir os arquivos recebidos em novas guias.

    
por 28.09.2009 / 02:06