
Quero que meu recuo do vim funcione da seguinte maneira: se eu tiver
▷ ▷ int function(int x,▒int y, int z) {
e pressiono enter, quero obter o seguinte:
▷ ▷ int function(int x,
▷ ▷ _____________int y, int z) {
Onde "▷" é uma tabulação e "_" é um espaço.
Em outras palavras, quero usar tabulações, mas se eu tiver uma quebra de linha em um local que não adiciona um nível de recuo, a linha não recuada deverá ser alinhada com o espaço em branco.
Isso me permite usar tabulações para recuo, mas preservar a formatação em níveis sem recuo, para que a formatação seja preservada mesmo se o tamanho da tabulação for alterado.
Até agora, não encontrei uma maneira de isso ser possível com o Vim. Preserveindent e copyindent não são o que estou procurando. Eles respeitam o expandtab e quero usar apenas o expandtab para recuo e espaços para alinhamento.
Responder1
De acordo comVimWiki, oGuias inteligentesplugin fará isso. Eu não tentei sozinho.
Responder2
Atualmente, isso não parece viável no vim. Você pode ter tabulações ou espaços, não ambos. Não é surpreendente, já que o tempo para espaços nas tabulações depende muito do idioma. Considere: Em python, como você trataria:
x = fn(abc, 'def', {
ghi: jkl,
mno: pqr,
})
Você deveria voltar às guias em algum momento? Isso seria ideal, mas muito sensível ao contexto e não funcionaria realmente em vários idiomas. Outro exemplo divertido, em haskell:
data Something = Something { flag1 :: Bool
, flag2 :: Bool }
deriving (Eq, Ord, Show)
Boa sorte com isso.
Concluí que, infelizmente, seriam necessárias extensões específicas de linguagem para esse tipo de funcionalidade. Se você conhece uma boa maneira de fazer isso, eu adoraria ouvir.