De tempos em tempos, enquanto trabalho em vários projetos, e / ou o que for, ele me deixa com (também) muitas instâncias do Vim abertas - como acontece, eu abro um arquivo que já está aberto em outro lugar, deixando-me a opção de:
[O]pen Read-only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort
Existe alguma maneira integrada de aumentar a instância, como na GUI / terminal, mantendo o arquivo aberto? Idealmente, coloque o arquivo em questão em primeiro plano (se houver vários buffers).
No momento, estou usando um script bash que extrai o PID da troca, verifique se esse PID pertence ao Vim e, se for o caso, wmctrl
para aumentar a janela. Enquanto isso funciona bem, pelo menos para a GUI e no X11 Linux, estou perguntando se existe uma maneira mais nativa.
Respostas:
Uma solução seria usar uma única instância do vim por projeto, o que evitaria esse problema, a menos que seus vários projetos tivessem arquivos sobrepostos.
No entanto, vou assumir que você está procurando uma solução automatizada, em vez de uma sugestão de mudança de comportamento.
Existe a possibilidade de outra solução no FocusLost que seja mais nativa do vim.
O evento de autocommand do FocusLost funciona na GUI Vim e em alguns terminais do console. Você pode, em vez de mudar para o arquivo na versão do vim que está aberto (que, se você estiver usando várias janelas da interface gráfica, é uma bagunça), persistir quaisquer alterações que não foram gravadas na outra instância do vim não são perdidas (a separe o git branch, salve e desfaça para que fique na árvore de desfazer) ou abra-o) e abra-o na nova instância com uma indicação de que ele foi aberto antes.
Outro evento de comando automático potencialmente útil, disponível no vim 7, é o SwapExists , que indica que existe um arquivo de troca para o arquivo, ou seja, está aberto.
Se você manteve tudo no tmux ou na tela, provavelmente existe uma maneira de mudar para a janela / painel apropriado.
Uma breve pesquisa no github também exibe https://github.com/lynnard/editexisting.vim, que parece funcionar para gerenciadores de janelas específicos como o Xmonad.
fonte
Há muito perdido e quase esquecido.
Pretendia re-fatorar o código etc., mas a postagem é como está. Este código é usado em um sistema de 32 bits. Não tenho certeza de como ele se comportaria em 64 bits (ou outro).
Também hackear o código C em algum lugar (extraindo PID).
Deixe-o como um post para qualquer um hackear e mexer. Meu script atual como um todo (usando
pid
como opção, ele deve funcionar em qualquer GUI, pois é "GUI-PID / Program" e o uso dewmctrl -l -p
e assim por diante):fonte