2009-03-09 8 views
1

私はログファイルの名前を「blah N.log」(Nは整数)で調べるデバッグを行っています。定期的に新しいログファイルが追加されます。具体的には:e blah\ N.logを実行するのではなく、次のログファイルにスキップするだけです。 % vim *.logを実行してから:nを実行するだけでは、b/cのログファイルがすべて存在するわけではありません。Vim:式をファイル名として使用

私は次のログファイル名になる式持っている:

:echo substitute(expand('%'), ' \zs\d\+', \=submatch(0) + 1', '') 

をしかし、私は:eコマンドにその式の結果を渡す方法を見つけ出すことはできません。任意のヒント?

答えて

2

ここにはの方法がありますが、よりエレガントな方法があります。

:execute ':e ' . substitute(substitute(expand('%'), ' \zs\d\+', \=submatch(0) + 1', ''), ' ', '\\ ', '') 

ファイル名のスペースをエスケープするには、もう1つのsubstitute()コマンドを追加する必要があります。

2

また、関数にラップすることもできます。あなたがマッピングまたは略語をお勧めします)

を "編集" GetNextLogfileを(実行します。その後、

function! GetNextLogfile() 
    "" store expression in a 
    "" let a=... 
    return a 
endfunction 

:私は、次の手順を実行します。

+0

+1:私は1ライナーを望んでいましたが、これは良い方法です。 – rampion

+0

これを何度も繰り返す予定がある場合は、vimrcにいくつかの機能を組み込む価値があります:) – alvatar

1

さらに別の方法::e <CTRL-R>=は、式プロンプトを表示します。適切な式を入力し(式履歴を使用するなど)、<Enter>を押して元のプロンプトの値を置き換えます。

これは、キーストロークを作る:

:e <CTRL-R>=<Up><Enter><Enter> 

それにもかかわらず、ちょうど:<Up><Enter>は私:execコマンドをやり直すよう、​​わずかではありませんが、便利なトリック。

関連する問題