Guias e espaços do Vim

5

Eu quero que meu recuo de vim funcione da seguinte maneira: se eu tiver

▷   ▷   int function(int x,▒int y, int z) {

e eu pressiono enter, quero receber o seguinte:

▷   ▷   int function(int x,
▷   ▷   _____________int y, int z) {

Onde "▷" é uma tabulação e "_" é um espaço.

Em outras palavras, quero usar guias, mas se eu tiver um quebra de linha em um local que não adicione um nível de recuo, a linha não recuada deverá estar alinhada com o espaço em branco.

Isso permite usar guias para recuo, mas preservar a formatação em níveis não recuados para que a formatação seja preservada, mesmo que o tamanho da tabulação seja alterado.

Até agora, não encontrei uma maneira que isso seja possível com o Vim. Preserveindent e copyindent não são o que eu estou procurando. Eles honram o expandtab e quero usar apenas o expandtab para recuo e espaços para alinhamento.

    
por So8res 04.10.2010 / 06:57

2 respostas

1

Atualmente, isso não parece viável no vim. Você pode ter guias ou espaços, não ambos. Não é surpresa, pois o tempo para espaços sobre as guias é muito sensível ao idioma. Considere: Em python, como você trataria:

x = fn(abc, 'def', {
                       ghi: jkl,
                       mno: pqr,
                   })

Você deve voltar às guias em algum momento? Isso seria ideal, mas muito sensível ao contexto e não funcionaria realmente em linguagem cruzada. Outro exemplo divertido, no haskell:

data Something = Something { flag1 :: Bool
                           , flag2 :: Bool }
               deriving (Eq, Ord, Show)

Boa sorte com isso.

Eu concluí que extensões de linguagem específicas seriam necessárias para esse tipo de funcionalidade, infelizmente. Se você sabe de uma boa maneira de fazer isso, porém, eu adoraria ouvir isso.

    
por 16.11.2011 / 23:10
2

De acordo com a Vim Wiki , o Smart Tabs fará isso. Eu não tentei eu mesmo.

    
por 04.10.2010 / 09:33

Tags