2011-10-20 10 views
0

私はJanusを使用しています(しかし、質問を理解するために重要ではありません)。彼らは基本的には書き直しです:e:編集:NERDTreeで作業するように編集しますが、NERDTreeはファイルを強制的に開くことをサポートしていません(e!など)。だから私は何かを書いていた書き換え:編集! :私はそれが既に構築されたかのようならば偽装しようとしている!、編集これは私が思い付いたものです::E!が、私はちょうどを使用する利点が好き。Vim関数/コマンドを書き込もうとしていますか?

ca Edit! e! <bar> Edit 

のみ問題は、少なくとも1回は保存されていないファイルに対しては実行できないということです。しかし、私は動作します

ca Edit! bd! <bar> Edit 

をやって知っている:それは保存されていないバッファを閉じて、起こった何のように動かし続けます。私がする必要があるのは、常に適切なシナリオで正しいコマンドを使用するロジックを書くことだけです。論理がすべてのページで実行されないようにすることをお勧めします。実際にコマンドを実行したときにのみ、それを把握してください。何か案は?

編集:#vimチャンネルに尋ねてみました(私に助けてくれました)...彼らはexpand( "%")を使用して、それが存在するかどうかを確認すると私の場合に役立つと言いましたか?わかりません、できるだけ詳細を提供するだけです。

+0

私はちょうどスーパーで同様の質問をしました。その答えが役に立つかもしれないhttp://superuser.com/questions/348359/how-do-i-create-a-shortcut-for-a-find-and-replace-command-in-vim – CamelBlues

+0

私が抱えている主な問題は、保存されていないバッファに保存されているか、一度保存されたファイルであるかどうかを検出し、コマンド(またはユーザコマンド)内でそれを使用するかどうかを調べることです。 – xckpd7

+0

コマンドラインの省略形を使用する場合は注意が必要です。詳細については、http://stackoverflow.com/questions/7513380/vim-change-x-function-to-delete-buffer-instead-of-save-quit/7515418#7515418を参照してください。 –

答えて

0

これを試してください。このような関数を定義します。

function! CommandAbbrForEdit() 
    if &modified 
     return 'bd! | Edit' 
    endif 
    return 'e! | Edit' 
endfunction 

次に、このようなあなたの略語を定義します。

cabbrev <expr> Edit! CommandAbbrForEdit() 
関連する問題