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.