web-dev-qa-db-ja.com

Vimでタブを閉じるを元に戻す

Vimでタブを閉じて、何かのために再度開く必要があることにすぐに気付きました。 Vim 7.2でタブを閉じる操作を元に戻す方法はありますか?

73
Amjith

MRU(最近使用したファイル)プラグイン を使用しています。編集したばかりの最後の30ファイルを編集できます

MRUプラグインのメタデータは次のとおりです。

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

使用法

MRUリストからファイルをリストおよび編集するには、「:MRU」コマンドを使用できます。 ":MRU"コマンドは、一時的なVimウィンドウにMRUファイルリストを表示します。 MRUウィンドウがすでに開いている場合は、ウィンドウに表示されているMRUリストが更新されます。

9
Oli

あなたのファイルはおそらくまだバッファで開いています:

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

たとえば、バッファ18を再度開くには、次のようにします。

:tabnew +18buf
125
greyfade
:tabnew#

最近閉じたファイルを新しいタブで再度開きます


編集:greyfadeの回答を使用してください。私は自分の答えは好きではありませんが、参照と有用なコメント情報のためにここに保管しています。

26
konyak

簡単な答えは「いいえ」、組み込みのものは何もありません。

しかし、実行可能な解決策は、優れた BufExplorer のようなプラグインを使用することです。デフォルトでは、最近使用したバッファが最初にリストされるため、閉じたタブを再度開くのは、\betを押すのと同じくらい簡単です。

6
Ben Hoffstein

BufferCloseイベントがあった場合、これは簡単です... しかし、ウィンドウの作成ができないため、不可能であるようです

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

使用法: <leader>tr最後に閉じたタブを新しいタブで再び開きます(タブに単一のバッファーしかなかったと仮定します):

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>

プラグインのBenを使用してください: BufExplorer Github Mirror

彼の答えでは、<Leader>be<Down>tを押す必要があります。ビットショートカットを追加する:

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

したがって、単に<leader>tが機能します。

1
Lucia