Làm cách nào để di chuyển một cửa sổ hiện có sang một tab mới?


151

Có cách nào để lấy một cửa sổ hiện có (tách) và đặt nó vào một tab mới không?


Nếu bạn quay lại câu hỏi này, xin vui lòng thay đổi câu trả lời được chấp nhận, câu trả lời của DrAI đúng hơn nhiều so với câu hỏi từ Mykola.
gbr

Câu trả lời:


261

Cũng như :tabeditcách tiếp cận được đề xuất trước đây , một cách nhanh hơn để thực hiện là (ở chế độ bình thường) để nhấn Ctrl- W Shift- T. Ctrl-W là tiền tố chung cho nhiều loại lệnh thao tác cửa sổ.

Xem:

:help Ctrl-W_T
:help Ctrl-W

3
Lưu ý help Ctrl-W_Tđưa bạn đến mục trợ giúp của Ctrl-W_t(chữ thường), tuy nhiên, phía dưới trang là Ctrl-W_Tmục (có chữ T viết hoa), nói "Chuyển cửa sổ hiện tại sang trang tab mới ...."
Rabarberski

1
@DrAl và cách chúng tôi di chuyển một cửa sổ tab mới sang cửa sổ chia?
Ramiz Uddin

@RamizUddin Không có cách nào đơn giản để làm điều này (vì không rõ cửa sổ nào bạn muốn tách thành). Tuy nhiên, bạn có thể tìm ra số bộ đệm cho trang tab hiện tại của mình :echo bufnr("")và sử dụng số này, bạn có thể chia một cửa sổ bằng :sp #3hoặc :sb 3(giả sử số đó là 3). Bạn có thể đưa ra một số ánh xạ hoặc chức năng để đơn giản hóa việc này.
DrAl

1
Làm thế nào để bạn di chuyển bộ đệm sang một tab mới, giữ cho nó hoàn tác / làm lại trạng thái. Nói cách khác, tôi không muốn mở cùng một tệp trong một tab mới, tôi muốn di chuyển bộ đệm sang một tab mới, vì vậy lịch sử chỉnh sửa có thể được sử dụng trong tab mới. Nếu không có cách mặc định để làm điều này, tôi cá rằng một plugin có thể được tạo ra để thêm một lối tắt mới để thực hiện việc ghi lịch sử hoàn tác vào tệp hoán đổi cho bộ đệm mới.
trusktr

2
@trusktr Tôi tưởng tượng rằng việc mở bộ đệm trong một tab mới :sbsẽ hoạt động, nhưng với các phiên bản gần đây của Vim (> = 7.3), bạn cũng có thể sử dụng hoàn tác liên tục bằng cách đặt set undodir=/path/to/dirtrong đó / path / to / dir là một thư mục bạn tạo ra cho mục đích và sau đó set undofile. Điều này sẽ cho phép bạn thoát vim và sau đó khởi động lại và vẫn giữ trạng thái hoàn tác / làm lại.
DrAl 25/03/13

103

Thử

:tabedit %<CR>

3
Chỉ tò mò tại sao bạn lại bao gồm <CR> với điều đó.
Thụy Sĩ

17
Vì lý do tương tự, tôi đã bao gồm ":". Đây là tổ hợp phím vim hoàn chỉnh ở chế độ bình thường và bạn có thể sử dụng khóa này trong 'nnoremap' và trong 'nmap'
Mykola Golubyev

6
Điều này cũng hoạt động ngoại trừ nó nhân bản / sao chép cửa sổ sang một tab mới thay vì đóng nó trước và sau đó mở nó trong một tab mới. Không phải là một thỏa thuận lớn. Chỉ cần một cái gì đó để nhận thức được.
A-Dubb

6
Điều này không di chuyển bộ đệm sang một tab mới, nó chỉ mở cùng một tệp trong một tab mới, nhưng bạn sẽ không có lịch sử hoàn tác / làm lại, v.v.
trusktr 22/03/13

5
C-w Tlà cách nhanh hơn để làm điều tương tự
Dylanthepiguy

3

Điều này di chuyển bộ đệm mới nhất trong một tab mới và khôi phục bộ đệm trước đó trong tab hiện tại. Tôi sử dụng điều này sau khi kéo một tệp mới vào Gvim của tôi

:sbp |wincmd p| wincmd T

Bạn có thể ánh xạ nó như thế vào Ctrl-Backspace

:nnoremap <C-BS> :sbp<bar>wincmd p<bar>wincmd T<CR>

nó thực hiện đặc biệt tốt với

:set switchbuf=usetab

0

Tôi đã sử dụng cái này cung cấp cho bạn hai chức năng có thể được liên kết với một cặp phím nóng hoặc lệnh và hoạt động khá trực quan. Tôi khá chắc chắn rằng nó cung cấp hành vi thậm chí còn thân thiện hơn ví dụ Ctrl-W_T.

Ví dụ: khi nhiều cửa sổ được mở trong nhiều tab, sử dụng chức năng này cho phép bạn di chuyển cụ thể cửa sổ hiện tại sang tab tiếp theo hoặc trước đó và nếu bạn di chuyển một cái gì đó đến trước tab đầu tiên hoặc sau tab cuối cùng, thì nó sẽ chuyển vào một tab hoàn toàn mới.

Điều này có nghĩa là nếu bạn có 2 tab, mỗi tab có một cửa sổ, sau đó di chuyển cửa sổ của tab đầu tiên sang phải sẽ kết hợp nó với tab thứ hai để tạo ra một tab có hai cửa sổ. Tôi không biết làm thế nào phức tạp hoạt động này để đạt được bằng cách sử dụng các lệnh truyền thống.

Điều này có nghĩa là một cặp lệnh di chuyển cho phép cả hai cửa sổ dịch chuyển xung quanh các tab, tách các cửa sổ ra thành các tab (bằng cách đẩy một cửa sổ ra cuối cùng) và nối các tab riêng biệt vào các cửa sổ bên trong một tab, hầu hết mọi thứ bạn có thể muốn, không cần sắp xếp vị trí (là một chủ đề riêng biệt và các lệnh Ctrl-W+ tích Shift-HJKLhợp hoạt động tốt).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.