Как можно сложить каждую строку с тем же отступом, что и текущая строка (строка, на которой находится курсор), используя ручное сворачивание в vim?
По сути, иногда мне нужно, чтобы Vim сворачивал элементы так же, как это делал бы Vim при
foldmethod=indent
, но я предпочитаю работать с , foldmethod=manual
и не буду его менять.
Например:
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
В этом случае строки следует сложить foo = bar
до x = foo + a
.
решение1
Вы можете использовать :-1,+1norm zF
, чтобы указать относительный диапазон строк для сворачивания. (В случае 1 строки выше и одной ниже вы можете опустить s 1
в этой команде и просто использовать :-,+norm zF
).
Если вы открыты для установки плагина, есть
vim-indent-объектчто дает 'indent objects' как ii
для i
nside i
ndent и ai
для a
round
i
ndent (среди прочих). Затем вы могли бы сделать что-то вроде zfii
.