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 ii
ndentやround ndentなどの「インデント オブジェクト」が生成されます(他にもいくつかあります)。次に、次のような操作を実行できます。i
i
ai
a
i
zfii