Vim: как вручную сложить блок с отступом?

Vim: как вручную сложить блок с отступом?

Как можно сложить каждую строку с тем же отступом, что и текущая строка (строка, на которой находится курсор), используя ручное сворачивание в 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для inside indent и aiдля around indent (среди прочих). Затем вы могли бы сделать что-то вроде zfii.

Связанный контент