2012-10-15 66 views
8

我想停止Vim滾動(如果這是正確的話)當我水平分割窗口。如何防止Vim在分割窗口時滾動?

假設我在Vim中編輯了10行文件。我有一個窗口到緩衝區,窗口高40行。兩個窗口有足夠的空間,一個在另一個之上,兩個都顯示整個緩衝區。假設scrolloff設置爲4.

當我水平分割窗口時,會滾動原始窗口,以便在窗口頂部和光標所在的線之間顯示scrolloff行 - 如果有多於scrolloff行在窗口頂部和光標行之間 - 即使不需要滾動。換句話說,如果光標在分割窗口時位於第1,2,3,4或5行,原始窗口不會「移動」(良好)。但是如果光標位於第6行,則窗口會滾動,以便第2行成爲最頂端的可見行......確保scrolloff行(4)在光標行上方可見(煩人)。同樣,如果光標在分割窗口時位於第7行,則原始窗口將滾動到該行,第3行將變爲最頂端的可見行。等等。

有沒有辦法配置Vim從不滾動原來的窗口,當我水平分割它?

我想有可能將<C-W>s映射到做我想做的功能,但如果可能的話,我寧願通過配置來解決這個問題。

+0

是不是滾動的直接影響? – romainl

+0

即使'scrolloff'爲0(即從未設置),它也會發生。另外'scrolloff'應該是保持在光標上方/下方的最小行數,而不是確切的數字。 –

+0

您可以'設置滾動= 999',這通常用於保持當前行在窗口的中間。它似乎解決了你的問題,但它可能會超級煩人。 – romainl

回答

5

我找到了一個解決方案,借用here的答案。

在我.vimrc我:

nnoremap <C-W>s Hmx`` \|:split<CR>`xzt`` 

,現在當我與<C-W>s水平分割窗口,原窗口根本不會滾動。

+0

這是我現在使用的解決方案,但使用':wincmd s'時,我必須在Chromebook上執行這個操作,因爲''會嘗試關閉窗口,但我仍然遇到令人討厭的更改。此外,當這個工作,'',屏幕會閃爍,而較舊的vim設置工作正常。我認爲有一個很難找到或無證的設置可以解決這個問題,除非它是一個合法的vim錯誤。 – redbmk

2

作爲替代Andy Stewart的解決方案這是我在我的.vimrc使用:

     (3)   (5) 
         ++   +--+ 
         ||   | | 
nnoremap _ Hmx``<C-w>szz<C-w><C-p>`x``<C-w><C-p> 
      | || | |  | |  | 
      +-+-++----+ +--------+ +--------+ 
      (1) (2)  (4)   (6) 

(1)轉到左上角保存馬克x並返回到原來的位置。
(2)創建一個新的分割。光標將移動到這個新的分割窗口。
(3)使用zz居中游標線。
(4)返回到您創建分割的窗口。
(5)返回到x標記,然後返回到您所在的位置(模擬步驟(1))
(6)返回到您創建的拆分。

另外我做的是將zz添加到新打開的分割上,使得新窗口上的光標更易於捕捉。我的大腦可以自動對焦到新分割的中央行。

相關問題