2009-02-21 60 views
69

Tôi đóng một tab trong vim và ngay lập tức nhận ra rằng tôi cần phải mở lại một lần nữa cho một cái gì đó. Có cách nào để hoàn tác tab đóng trong Vim 7.2?Hoàn tác đóng tab trong Vim

+0

này có thể được chuyển đến vi.stackexchange.com? – Sukima

+0

Xin chào, [bit này của vimscript và plugin windowlayout] (https: //www.reddit.com/r/vim/comments/3ke941/undo_close_tab/cux8gh2) thực hiện công việc: nó mở lại tab bạn vừa đóng và mang lại bố cục cửa sổ bạn có. –

Trả lời

9

Tôi đang sử dụng MRU (most recently used files) plugin. Vì vậy, tôi có thể chỉnh sửa 30 file cuối cùng tôi đã chỉ cần thay đổi nội dung

Sau đây là các MRU Plugin metadata:

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

Cách sử dụng

Để liệt kê và chỉnh sửa tập tin từ danh sách MRU, bạn có thể sử dụng lệnh ": MRU". Lệnh ": MRU" hiển thị danh sách tệp MRU trong cửa sổ Vim tạm thời. Nếu cửa sổ MRU đã được mở, khi đó danh sách MRU được hiển thị trong cửa sổ sẽ được làm mới.

+5

Bạn có thể tóm tắt cách sử dụng cơ bản không? –

+0

Tôi không hiểu câu trả lời này ... Có vẻ như nó đề xuất sử dụng plugin? – Carpetsmoker

+0

@Carpetsmoker Có, đó là: mru.vim. – trusktr

6

Câu trả lời đơn giản là không, không có gì được tích hợp sẵn.

Nhưng giải pháp có thể thực hiện là sử dụng plugin như xuất sắc BufExplorer. Vì nó mặc định là danh sách các bộ đệm gần đây nhất được sử dụng đầu tiên, mở lại một tab đã đóng sẽ là đơn giản như cách nhấn \bet

+0

Như đã đề cập bởi Lucia, trước hết bạn cần phải đi xuống với ' t' để nó hoạt động. –

114

tập tin của bạn có thể vẫn mở trong một bộ đệm:

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

Để mở lại đệm 18, cho ví dụ:

:tabnew +18buf 
+0

không hoạt động đối với tôi – Chris

+5

Nó làm cho tôi. Tôi đã thử nó ngay trước khi đăng. – greyfade

+5

': tabnew N' không hoạt động đối với tôi. Những gì tôi làm là ': tabnew' và sau đó': bN' trong đó N là số bộ đệm – alf

1

Sử dụng các plug-in Ben đề nghị: BufExplorer Github Mirror

Trong câu trả lời của ông ta sẽ phải nhấn <Leader>be<Down>t. Thêm lối tắt bit:

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

Vì vậy, chỉ cần <leader>t sẽ thực hiện công việc.

23
:tabnew# 

Mở cửa lại tập tin vừa khép kín trong tab mới


Sửa: Vui lòng sử dụng câu trả lời greyfade của. Tôi không thích câu trả lời của tôi, nhưng tôi giữ nó ở đây để tham khảo và thông tin bình luận hữu ích.

+0

Đã không làm việc cho tôi - Vim 7.4 –

+0

Lạ, có vẻ như nó làm việc lúc đầu tiên bây giờ nó là mở bộ đệm không liên quan. –

+0

'#' là tệp được chỉnh sửa cuối cùng trong cửa sổ hiện tại. Đóng một tab không đăng ký tập tin thay thế ('#'). Bạn phải tìm kiếm nó bằng số bộ đệm (': ls') – Sukima

1

Nếu có sự kiện BufferClose điều này sẽ dễ dàng ... but it seems that it is not possible since it is not possible for window creation.

Nhưng trong trường hợp tab, chúng tôi có thể phát hiện xem tab có bị đóng hay không bằng cách giữ số tab và đếm sự khác biệt giữa TabLeaveTabEnter.

Cách sử dụng: <leader>tr mở lại các tab đã đóng cuối cùng trên một tab mới (giả tab chỉ có một bộ đệm đơn):

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> 
Các vấn đề liên quan