Vim: como dobrar manualmente o bloco recuado?

Vim: como dobrar manualmente o bloco recuado?

Como posso dobrar cada linha com o mesmo recuo da linha atual (a linha em que o cursor está) usando a dobra manual no vim?

Basicamente, às vezes preciso que o Vim dobre as coisas exatamente como o Vim faria quando foldmethod=indent, mas prefiro trabalhar com foldmethod=manuale não vou mudar isso.

Por exemplo:

function f(x)

  while (x > a)
    foo = bar
    someStuff() // suppose cursor is here
    x = foo + a
  end

  if (x < b)
    x = b // this line should not be indented
  end
end

Neste caso, deve dobrar as linhas foo = barpara x = foo + a.

Responder1

Você pode usar :-1,+1norm zFpara especificar um intervalo relativo de linhas a serem dobradas. (No caso de 1 linha acima e outra abaixo você pode omitir o 1s nesse comando e apenas usar :-,+norm zF).

Se você estiver disposto a instalar um plugin, há vim-indent-objetoque fornece 'objetos de recuo' como iipara inside indent e aipara around indent (entre outros). Então você poderia fazer algo como zfii.

informação relacionada