簡體   English   中英

在 VIM 中打開一個緩沖區作為垂直分割

[英]Open a buffer as a vertical split in VIM

如果你在 VIM 中編輯一個文件,然后你需要打開一個現有的緩沖區(例如從你的緩沖區列表: :buffers )你怎么能在垂直拆分中打開它?

我知道您已經可以使用正常拆分打開它,例如:

:sbuffer N

這里N是您想要的緩沖區編號,但是,上面會水平而不是垂直地打開N緩沖區。

我也知道您可以在打開后更改窗口位置並進行垂直拆分,如下所示:

Ctrl-W H
Ctrl-W L

這將垂直向右或向左拆分窗口。

在我看來,如果有一個sbuffer應該有一個vsbuffer但它不存在(我不知道)

另外,請注意,我不是在尋找解決此問題的插件。 我知道有很多插件可以讓你做到這一點。

我確信我可能會遺漏一些已經存在的東西。

編輯:本着最好的協作精神,如果其他人偶然發現這個問題並且不想安裝插件,我已經創建了一個帶有映射的簡單函數:

功能:

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

映射:

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

這完成了在右拆分中打開緩沖區的任務,因此對於緩沖區 1,您可以這樣稱呼它:

:Vbuffer 1

嘗試:

:vert sb N

這將打開一個左垂直拆分(默認情況下,除非您修改了某些選項)。

另一方面,要打開右側的拆分,請執行以下操作:

:vert belowright sb N

:vsp | b1

1 是一些緩沖區編號。 使用buffers列出所有緩沖區。

如果您有興趣,這里有一些關於拆分的附加信息。 鏈接

您可以通過將以下內容添加到您的 .vimrc 來減輕您的痛苦

cabbrev vb vert sb

現在您可以通過以下方式使用它。

:vb <buffer>

我發現最有用的 OP 答案深深地嵌入在 Je​​rinaw 的答案及其評論中,以及 Wolfson 的答案中。 但我覺得它可能會被帶出更多。 (這些人也沒有得到最高的投票,盡管在我看來他們是回答 OP 最好的人。)

問題的答案,為什么沒有:vsbuffer ,是有。 它被稱為:vsplit並且可以作為

:vsplit NameOfBuffer

:vsplit #NumberOfBuffer

(在第二次使用中,請注意哈希 # 很重要。如果您想獲得第 3 個緩沖區,您需要說:vsplit #3 ,而不僅僅是:vsplit 3它將創建一個名為“的新文件” 3”。)

同樣,這個答案嵌入在上面,它對於快速掃描儀 IMV 來說還不夠清楚。

您還可以結合:ls列出您當前的緩沖區和打開所需緩沖區的命令

  1. 當前窗口: :b <N/bufname>
  2. 垂直分割: :vsp | b <N/bufname> :vsp | b <N/bufname>
  3. 水平分割: :sp | b <N/bufname> :sp | b <N/bufname>

為此,我已將以下映射添加到我的~/.vimrc (映射順序代表所需窗口的上述列表)

 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>

在此基礎上,你一點擊就可以看到緩沖區列表

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

然后只需輸入所需的緩沖區編號N 這將在所需的窗口中打開緩沖區。 當然,您仍然可以使用緩沖區名稱bufname的一部分。

我將<leader>映射到,基於

let mapleader = ","

對於某些人(例如我),這甚至可以替代 MiniBufExpl 之類的插件,從而節省屏幕空間。

你可以使用 Neovim,就像這樣:

autocmd FileType python nmap <F5> :rightbelow vertical split <bar> :term python %<cr>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM