1

ログファイル名「blah N.log」のチェックを含むデバッグを行っています。ここで、N は整数です。定期的に新しいログ ファイルが追加されるので、明示的に行うのではなく、次のログ ファイルにスキップしたいと思います:e blah\ N.log。私はできません.b / cまだすべてのログファイルが存在しているわけではありません% vim *.log.:n

次のログファイル名を生成する式があります。

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

:eしかし、その式の結果をコマンドに渡す方法がわかりません。任意のヒント?

4

3 に答える 3

2

これを行う方法がありますが、もっとエレガントな方法があるといいのですが。

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

substitute()ファイル名のスペースをエスケープするために、2番目のコマンドを追加する必要があります。

于 2009-03-09T18:04:23.413 に答える
2

または、関数でラップすることもできます。私は次のことをします:

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

それから

:execute "edit" GetNextLogfile()

マッピングまたは省略形が必要になる場合があります。

于 2009-03-09T18:06:24.623 に答える
1

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

これにより、キーストロークが次のようになります。

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

:<Up><Enter>それにもかかわらず、これは私のコマンドをやり直すだけでは:execなく、便利なトリックです。

于 2009-03-09T18:27:40.750 に答える