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 行上と 1 行下の場合には、1そのコマンドの s を省略して のみを使用できます:-,+norm zF)。

プラグインをインストールすることに抵抗がなければ、 vim-インデント-オブジェクトこれにより、nside iindentやround ndentなどの「インデント オブジェクト」が生成されます(他にもいくつかあります)。次に、次のような操作を実行できます。iiaiaizfii

関連情報