Usando o Vim / Gvim com várias janelas da GUI


25

É possível ter 2 ou mais janelas vim (G) para a mesma sessão, ou pelo menos compartilhar alguns buffers. Aqui, "janela" refere-se a uma janela do Gnome (ou KDE ou Windows etc.), não a uma janela do VIM.

Eu uso dois monitores com xinerama e quero abrir duas janelas GUI separadas, em vez de ter uma enorme e única que abranja várias telas.


você tentou: sp <nome do arquivo> ou: vsp <nome do arquivo>? Estes são os comandos de divisão de janelas do vim e são ótimos. Aqui está uma documentação
Tom Stephens

2
@ Tom Stephens: e isso ajuda .. como? O OP deseja posicionar as janelas vim de ONE instance vim em seus monitores. O OP não deseja UMA instância do vim estendida em todos os monitores.
akira

1
Isso é importante; o editor não deveria realmente fazer seu próprio gerenciamento de janelas.
Sam Watkins

Respostas:


19

Atualmente, o gVim não pode ter janelas 'superiores' separadas para o mesmo processo / sessão. Há um item TODO para implementar um sistema de comunicação entre processos entre várias instâncias do Vim para que ele se comporte como se os processos separados estivessem unificados. (Consulte :help todoe pesquise "nível superior".)


7 anos depois, Vim8, isso ainda está na lista de tarefas.
Al.G.

1
Doar para a caridade Vim e obter votos, em seguida, votar para o recurso: vim.org/sponsor/index.php
Heptite

3

Dê uma olhada na tela GNU usada em conjunto com o Vim.

Primeira janela, inicie a tela gnu e vim

xterm
screen -S edit
vim

Segunda janela, conecte-se à sessão de tela:

xterm
screen -x edit

Incrivelmente útil em grandes áreas de trabalho xinerama, várias telas virtuais ou sessões VNC. Uma sessão do Vim, com muitas guias, é tudo que você precisa.

- Tom


1
Pontos para o tutorial rápido e breve, embora eu chame isso de apenas um pouco útil, porque não consigo editar buffers diferentes da mesma sessão dessa maneira.
Atilla Filiz 12/12

Curiosamente, este é um ponto em que a tela vence o tmux, - no tmux, conectar-se à mesma sessão de um cliente diferente significa que você vê as coisas espelhadas em ambas as instâncias ... Estou considerando uma combinação profana das duas, mas não consegui descobri o que eu quero fazer ainda!
precisa saber é o seguinte

2

Já faz algum tempo desde que você fez sua pergunta e muitas coisas melhoraram. A Nvidia tem um suporte de driver muito melhor para vários monitores no Linux.
Agora parei de usar o Gvim desde que fui para o KDE: Agora estou usando o vim-qt. Permite abrir várias instâncias, caso você não queira usar o vim no terminal.

editar: Minha configuração


Estou tentando agora, como faço para usar essas várias instâncias? Parece gvim normal com uma cara ligeiramente diferente para mim.
Atilla Filiz

Você pode simplesmente iniciar duas instâncias do vim-qt para ter uma janela para cada uma das telas e pressionar a tecla Alt-tab entre elas ou atribuir teclas de atalho para cada janela. O Vim-qt foi criado para o qt, portanto, ambientes de desktop baseados em qt como o KDE podem utilizar melhor as janelas. Isso significa que você tem várias janelas gráficas diferentes abertas e que suas janelas vim gráficas podem ser exibidas em tela cheia. O que não era possível com o gvim regular.
precisa

6
Obrigado por reservar um tempo, mas não era isso que eu queria. Eu queria acessar os mesmos buffers em duas janelas GUI separadas. E isso não é possível, pois o compartilhamento de buffer ainda está na lista de tarefas do vim (consulte a resposta aceita).
Atilla Filiz

1

Você pode ter quantas sessões vi (m) desejar, usando janelas de terminal separadas para cada uma.

Por não tê-los espalhados, suponho que você os coloque em tela cheia e, em seguida, ele se expande nos dois monitores, pois está configurado para estender a área de trabalho. Não a maximize e ajuste manualmente o tamanho da janela do terminal ou gvim.

Se eu errei o alvo, tente elaborar um pouco mais.

O que você quer dizer com janela vim?

editar: Aqui está uma foto da minha tela com 4 instâncias do vim em execução

Espero que Heptite tenha atingido, porque eu estava meio que perdido com este.


1
É exatamente isso que estou fazendo agora, redimensione-os manualmente para abranger dois monitores e depois: vsplit, mas parece feio e, às vezes, quero ver alguns buffers em diferentes áreas de trabalho virtuais ou cobrir um monitor com outra coisa. O que eu quero é usar dois terminais differnet e ainda acessar os mesmos buffers de ambos.
Atilla Filiz

Eu entendo agora. Fico feliz em ver Heptite respondeu isso para você.
Dan M.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.