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=manual
e 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 = bar
para x = foo + a
.
Responder1
Você pode usar :-1,+1norm zF
para especificar um intervalo relativo de linhas a serem dobradas. (No caso de 1 linha acima e outra abaixo você pode omitir o 1
s nesse comando e apenas usar :-,+norm zF
).
Se você estiver disposto a instalar um plugin, há
vim-indent-objetoque fornece 'objetos de recuo' como ii
para i
nside i
ndent e ai
para a
round
i
ndent (entre outros). Então você poderia fazer algo como zfii
.