Mở bộ đệm dưới dạng phân chia theo chiều dọc trong VIM


176

Nếu bạn đang chỉnh sửa một tệp trong VIM và sau đó bạn cần mở một bộ đệm hiện có (ví dụ từ danh sách bộ đệm của bạn :buffers:) làm thế nào bạn có thể mở nó trong một phân chia dọc?

Tôi biết rằng bạn đã có thể mở nó với một phân chia bình thường như:

:sbuffer N

Wehere Nlà số bộ đệm bạn muốn, tuy nhiên, ở trên mở Nbộ đệm đó theo chiều ngang, không phải theo chiều dọc.

Tôi cũng biết rằng bạn có thể thay đổi vị trí cửa sổ sau khi mở và có Chia dọc như vậy:

Ctrl-W H
Ctrl-W L

Mà theo chiều dọc sẽ chia cửa sổ sang phải hoặc trái.

Dường như với tôi rằng nếu có sbufferthì nên có vsbuffernhưng điều đó không tồn tại (không phải tôi biết)

Ngoài ra, xin lưu ý rằng tôi không tìm kiếm một plugin để giải quyết câu hỏi này. Tôi biết về rất nhiều plugin sẽ cho phép bạn làm điều này.

Tôi chắc chắn rằng tôi có thể đang thiếu một cái gì đó đã có sẵn.

EDIT: Với tinh thần hợp tác tốt nhất, tôi đã tạo một Hàm đơn giản với Ánh xạ nếu có người khác tình cờ gặp phải vấn đề này và không muốn cài đặt plugin:

Chức năng:

" Vertical Split Buffer Function
function VerticalSplitBuffer(buffer)
    execute "vert belowright sb" a:buffer 
endfunction

Ánh xạ:

" Vertical Split Buffer Mapping
command -nargs=1 Vbuffer call VerticalSplitBuffer(<f-args>)

Điều này hoàn thành nhiệm vụ mở một bộ đệm trong một phân chia bên phải, vì vậy đối với bộ đệm 1, bạn sẽ gọi nó như sau:

:Vbuffer 1

Câu trả lời:


206

Thử:

:vert sb N

sẽ mở một phân chia dọc bên trái (theo mặc định, trừ khi bạn đã sửa đổi một số tùy chọn).

Mặt khác, để mở một phần tách sang bên phải:

:vert belowright sb N

5
không có vẻ khá kỳ lạ để không có vsbuffer N? Làm phiền. Câu trả lời của bạn đinh nó. Cảm ơn!
alfredodeza

13
Tôi luôn cảm thấy nên có một cái vsbufferquá, và tôi cũng thường quên Ctrl-w Tmở một bộ đệm trong một tab mới (hoặc tôi muốn làm điều đó với một bộ đệm hiện không hoạt động hoặc hiển thị). Vì vậy, để thay thế, bạn có thể sử dụng một thanh cho một trong những trường hợp này, điều mà tôi thấy dễ nhớ hơn câu trả lời hợp lệ của @ Jeet: :vsp | b N:tabe | b N.
ches

Tôi thích rằng lệnh này cho phép Ntự động hoàn thành (điều này dường như không thể với lệnh trong câu trả lời khác). Cả hai đều được nâng cấp, tuy nhiên.
David Rivers

124

:vsp | b1

1 là một số bộ đệm. Sử dụng buffersđể liệt kê tất cả các bộ đệm.

Đây là một số thông tin bổ sung về việc chia tách, nếu bạn quan tâm. Liên kết


9
Bạn cũng có thể sử dụng :ls, dường như là một phím tắt cho :buffers.
dskecse

3
bạn cũng có thể làm:vsp | b <buffer name>
Kenny Bambridge

4
@KennyBambridge thậm chí còn tốt hơn - bạn chỉ phải nhập một phần của tên bộ đệm (phân biệt chữ hoa chữ thường) và sau đó nhấn tab để chuyển qua danh sách được lọc
icc97

Hãy nhớ rằng mặc dù Liên kết được cung cấp bởi @Jerinaw rất tốt, thuật ngữ trên trang đó rất sai lệch vì vậy bạn cũng cần đọc các bình luận trên trang đó để làm rõ.
NeilG

5

Bạn có thể giảm bớt nỗi đau bằng cách thêm phần sau vào .vimrc của bạn

cabbrev vb vert sb

Bây giờ bạn có thể sử dụng nó theo cách sau.

:vb <buffer>

Điều này thật tuyệt, phiên bản mở rộng cũng cung cấp bộ đệm tự động hoàn thành tên! Tôi cũng không biết cabonymousv, cảm ơn.
kidpixo

2

Bạn cũng có thể kết hợp :lsliệt kê các bộ đệm hiện tại của mình và các lệnh để mở bộ đệm mong muốn trong một trong hai

  1. cửa sổ hiện tại: :b <N/bufname>
  2. chia dọc: :vsp | b <N/bufname>
  3. chia ngang: :sp | b <N/bufname>

Đối với điều này, tôi đã thêm các ánh xạ sau vào ~/.vimrc(thứ tự ánh xạ biểu thị danh sách các cửa sổ mong muốn ở trên)

 nnoremap <leader>b :ls<cr>:b<space>
 nnoremap <leader>v :ls<cr>:vsp<space>\|<space>b<space>
 nnoremap <leader>s :ls<cr>:sp<space>\|<space>b<space>

Dựa trên điều này, bạn có thể thấy danh sách bộ đệm ngay khi bạn nhấn

  1. <leader>b
  2. <leader>v
  3. <leader>s

và sau đó chỉ cần nhập số bộ đệm mong muốn N. Điều này sau đó sẽ mở bộ đệm trong cửa sổ mong muốn. Tất nhiên bạn vẫn có thể sử dụng một phần của tên bộ đệm bufname.

Tôi đã lập bản đồ <leader>để ,dựa trên

let mapleader = ","

Đối với một số người (ví dụ như tôi), điều này thậm chí có thể thay thế các plugin như MiniBufExpl và do đó tiết kiệm không gian trên màn hình.


0

bạn có thể sử dụng Neovim, như thế:

autocmd FileType python nmap <F5> :rightbelow vertical split <bar> :term python %<cr>
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.