0

さて、この質問は私の以前の質問の1つと漠然と関連しています。

バッファに関して、VimがPhotoshopと同じように保存して閉じることができるようにしたいですか?

基本的に私が見つけた(または私が望むものに本当に近づく)解決策は、基本的に変更されていないすべてのバッファーを閉じるBufOnlyと呼ばれるプラグインです。したがって、多くのバッファーを開いていて、閉じたい場合は、これを実行して、まだ実行していないすべてのことを処理します。それはうまくいきます。

しかし、私は貪欲です。必要なときにこれを自動的に実行したい。基本的には、qaを実行した場合、qaが->に遭遇した場合にそれが必要です。

E73: No write since list change (add ! to override)

それなら走りたい

:BufOnly<CR>:bd <cr>

それを行う方法はありますか?

4

1 に答える 1

1

vimのtry-catchメカニズムを使って関数を書くことができます。例:

 function! Funk()
    try
        execute "qa"
        let yes = 1
    catch /^Vim\%((\a\+)\)\=:E37/   
            execute "BufOnly"
            execute "bd"
    endtry
endfunction

これにより、エラーがキャッチされ、:E37必要なコマンドが実行されます。そのプラグインをインストールしていないため、BufOnlyでテストしませんでした。「」でテストしました。h ggのヘルプページが表示されますgg

コマンドを呼び出すには、と入力し:call Funk()ます。もちろん、その関数呼び出しのマッピングを作成することもできます。

于 2013-02-04T16:03:39.237 に答える