Vim で次の異なるインデント レベルに移動する方法はありますか?
たとえば、ここからあちらへ:
-> var a = 1;
var b = 2;
var func = function(){
-> return a + b;
}
Vim で次の異なるインデント レベルに移動する方法はありますか?
たとえば、ここからあちらへ:
-> var a = 1;
var b = 2;
var func = function(){
-> return a + b;
}
これは、スペース (タブではない) で構成されるインデントに対して機能するはずです。
call search('^ \{0,'.eval(indent(".")-1).'}\S\|^ \{'.eval(indent(".")+1).',}\S')
これは、次の 2 つの正規表現で構成されています。
^ \{0,'.eval(indent(".")-1).'}\S
前のスペースのfrom からtoに\{n,m}
一致する構造を使用して、より小さいインデントに一致します。n
m
^ \{'.eval(indent(".")+1).',}\S'
\{n,}
少なくともn
前のスペースに一致する構造を使用して、より大きなインデントに一致します。^
正規表現はとの間に挟まれ\S
て、行の先頭の空白にのみ適用されます。次に、それらは\|
('OR') 演算子によって結合されます。
もちろん、search()
便宜上、呼び出しをキーの組み合わせにマップすることもできます。
編集
Chris Johnsen は、 の呼び出しは不必要であると指摘しているeval()
ため、コマンドは次のように短縮できます。
call search('^ \{0,'.(indent(".")-1).'}\S\|^ \{'.(indent(".")+1).',}\S')