Pergunta

Existe alguma maneira de ter VIM continuar a aplicar a formatação para a linha usada como o cabeçalho para uma dobra?

.

por exemplo, eu tenho o seguinte código:

int foo(int a, int b) {
    int c;
....
}

Quando dobrada, vejo:

+-- 4 lines: int foo(int a, int b) {----------------------------

No entanto, toda a linha é destacada como pela classe "dobrado". Existe alguma maneira de desabilitar isso, então eu continuar a ver o destaque de sintaxe?

[para um exemplo simples isso não é tão importante, mas eu também usar dobrar extensivamente na visualização de grandes arquivos de dados, e não a formatação é muito mais importante para mim]


Foi útil?

Solução

No entanto, toda a linha é destacada como pela classe "dobrado". Existe alguma maneira de desabilitar isso, então eu continuar a ver o destaque de sintaxe? "

Não, o texto do cabeçalho dobrado não é o texto que faz parte de um arquivo e não é diretamente editável, apenas calculadas e sobrepostas na tela. O destaque 'dobrado' é aplicada a toda a linha, e todas as dobras têm o mesmo destaque aplicada.

Para meu uso com o vim como um delineador (no projeto VimOutliner) Eu cortei a fonte vim para permitir destaque vezes diferentes, dependendo do nível de vezes, por isso há vários destaques título dobra que são aplicadas (por exemplo FoldLevel1, FoldLevel2, etc). Eu suponho que poderia ser ainda mais hackeado para usar já existente realçando do texto na linha da cabeça dobra, mas dada a forma como dobrar funciona Eu suspeito que pode ser mais difícil de fazer do que parece.

Desculpe, apenas me ocorreu que a sugestão para foldmethod do travessão pode ser exatamente o que você está procurando de qualquer maneira, o que faz preservar a sintaxe nas linhas sem recuo, enquanto ainda tê-los funcionar como uma espécie de ir para a seção dobrada.

Outras dicas

Eu acho que o que você está procurando está mudando a foldmethod para travessão em vez de manual, que é o padrão. Digite isso no modo de comando.

:set foldmethod=indent

Agora, se você vai dentro de sua função foo e tipo zm (aumentar o nível de dobra por um), ele será parecido com este:

int foo(int a, int b) {
+--  2 lines: int c;------------------------------------------------------------
}

A linha de foo ainda terá destaque de sintaxe. Para desdobrar naturalmente, digite zr. Por conveniência eu coloquei as seguintes linhas no meu .vimrc rapidamente dobrar ou tudo se desdobrar:

" Folding and unfolding
map ,f :set foldmethod=indent<cr>zM<cr>
map ,F :set foldmethod=manual<cr>zR<cr>

Há um também um bom tutorial aqui , e, claro, ler a ajuda vim em foldmethod pode levá-lo a outros métodos que você gosta melhor do travessão, mas a maneira como seu exemplo olha código você provavelmente vai querer travessão.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top