2009-02-21 7 views
69

私はvimのタブを閉じてすぐに何かのために再度開く必要があることを直ちに認識します。 Vim 7.2の閉じるタブを元に戻す方法はありますか?元に戻す閉じるVimのタブ

+0

が、これはvi.stackexchange.comに移動することができます:<leader>trが新しいタブで最後に閉じたタブを再び開く(タブを想定したが、単一のバッファを持っていましたか)? – Sukima

+0

こんにちは、[このvimscriptとウィンドウレイアウトプラグイン](https://www.reddit。com/r/vim/comments/3ke941/undo_close_tab/cux8gh2)は仕事をします。閉じたタブを開き、持っていたウィンドウレイアウトを戻します。 –

答えて

9

私はMRU (most recently used files) pluginを使用しています。 MRUリストからファイルを一覧表示し、編集するには

File: mru.vim 
Author: Yegappan Lakshmanan (yegappan AT yahoo DOT com) 
Version: 3.2 Last Modified: 
September 22, 2008 

使用

、次のことができます。だから私は、私はちょうどここ

を編集した最後の30個のファイルがMRUプラグインのメタデータです編集することができます":MRU"コマンドを使用します。 ":MRU"コマンドは、一時VimウィンドウにMRUファイルリストを表示します。 MRUウィンドウがすでに開かれている場合は、ウィンドウ に表示されているMRUリストが更新されます。

+5

基本的な使い方を要約できますか? –

+0

私はこの答えを理解できません...これはプラグインの使用を推奨しているようですね? – Carpetsmoker

+0

@Carpetsmokerはい、それはmru.vimです。 – trusktr

6

単純な答えはいいえ、何も組み込まれていません。

しかし、実行可能な解決策は、優れたBufExplorerのようなプラグインを使用することです。

:ls " get the buffer number 
:tabnew +Nbuf " where N is the buffer number 

バッファ18を再度開くには、のために:それ以来最初の最近使用バッファのリストに、デフォルトでは、閉じたタブを再度開くと、あなたのファイルがバッファにおそらくまだ開いている\bet

+0

Luciaが言及したように、最初に ' be t'とする必要があります。 –

114

を押すのと同じくらい簡単になります例:

:tabnew +18buf 
+0

は私のために働いていません – Chris

+5

それは私のためです。私は投稿する直前に試しました。 – greyfade

+5

':tabnew N'は私にとってはうまくいきませんでした。私は ':tabnew'と':bN'を使います。ここでNはバッファ番号です。 – alf

1

プラグインベンを使用することは推奨:BufExplorer Github Mirror

を彼の答えでは1が<Leader>be<Down>tを押す必要があります。単に<leader>tが作業を行うなるように

map <silent><leader>t <leader>be<Down>t 

:ビットのショートカットを追加します。

23
:tabnew# 

新しいタブで最近閉じたファイル


編集再オープン:greyfadeの答えを使用してください。私は私の答えが嫌いですが、私は参考文献や有用なコメント情報のためにここに保管しています。

+0

私のためにはうまくいかなかった - Vim 7.4 –

+0

奇妙なことに、最初は無関係のバッファを開いているようです。 –

+0

'#'は現在のウィンドウで最後に編集されたファイルです。タブを閉じると、ファイルが代替( '#')として登録されません。あなたはバッファ番号( ':ls')でそれを調べなければなりません – Sukima

1

BufferCloseイベントがあった場合、これは簡単です... but it seems that it is not possible since it is not possible for window creation

タブの場合、タブカウントを保持し、TabLeaveTabEnterの差を数えてタブが閉じられたかどうかを検出できます。

使用法:

let g:reopenbuf = expand('%:p') 
function! ReopenLastTabLeave() 
    let g:lastbuf = expand('%:p') 
    let g:lasttabcount = tabpagenr('$') 
endfunction 
function! ReopenLastTabEnter() 
    if tabpagenr('$') < g:lasttabcount 
    let g:reopenbuf = g:lastbuf 
    endif 
endfunction 
function! ReopenLastTab() 
    tabnew 
    execute 'buffer' . g:reopenbuf 
endfunction 
augroup ReopenLastTab 
    autocmd! 
    autocmd TabLeave * call ReopenLastTabLeave() 
    autocmd TabEnter * call ReopenLastTabEnter() 
augroup END 
" Tab Restore 
nnoremap <leader>tr :call ReopenLastTab()<CR> 
関連する問題