Vários buffers, mesmo arquivo, configurações diferentes

10

É possível editar um arquivo em configurações diferentes ao mesmo tempo? Mais precisamente, eu gostaria de ter vários buffers na mesma instância do Vim que tenham o mesmo conteúdo (alterar um buffer afeta o conteúdo do outro buffer imediatamente), mas posições diferentes do cursor, marcas diferentes, realce de sintaxe diferente etc.

Os casos de uso comuns incluem editar partes diferentes do mesmo arquivo independentemente (sem, por exemplo, entrar no modo visual em uma instância, interromper a seleção atual do modo visual na outra instância) e editar arquivos de formato misto (por exemplo, HTML e Javascript) sem precisar alterar as configurações . (Uma abordagem alternativa para o segundo caso de uso seria alterar as configurações automaticamente com base na posição do cursor, mas isso está fora do escopo desta pergunta.)

Um editor cuja menção pode chocar é chamada de "buffers indiretos".

Gilles 'SO- parar de ser mau'
fonte

Respostas:

2

O uso de várias janelas para visualizar o mesmo buffer permite visualizar, editar, selecionar, ... em diferentes partes de um buffer.

O destaque da sintaxe é uma questão mais complicada, dependendo exatamente do que você deseja. O Vim já suporta destacar partes diferentes de um buffer com sintaxe diferente. Por exemplo, se você tiver um buffer de tipo de arquivo html, as <style>tags serão destacadas como CSS, as <script>tags serão destacadas como javascript etc. Isso é feito usando o :syn includecomando e definindo as regiões de sintaxe relevantes às quais a sintaxe deve ser aplicada.

Uma alternativa é usar o :ownsyntaxcomando para especificar o realce da sintaxe usado para uma janela específica.

Marcas são o ponto difícil. As marcas em minúsculas são específicas para um buffer e as marcas em maiúsculas são globais, mas não existem marcas específicas da janela.

jamessan
fonte
11
Se eu usar várias janelas, isso significa que elas precisam estar na tela o tempo todo? O que acontece se eu fechar uma janela enquanto outra janela mostra o mesmo buffer, a posição do cursor nessa janela é perdida? Existe algo parecido :ownsyntaxcom outras configurações, como indentação, comando do compilador, etc.?
Gilles 'SO- stop be evil'
@Gilles Você pode ter duas janelas que nunca estão na tela juntas, colocando-as em guias separadas, mantendo configurações específicas da janela, posição do cursor, etc. Isso pode ajudar, dependendo do seu caso de uso específico.
Rich