2013-01-13 71 views
5

在Vim的正常模式下,可以分別按CTRL +Ë CTRL +Ÿ向下滾動了起來。我試圖做一個鍵綁定,讓我從插入模式,以及做到這一點。這是我得到的:如何在不離開插入模式的情況下向上/向下滾動?

" Scroll up and down while in insert mode. 
inoremap <C-e> <C-o><C-e> 
inoremap <C-y> <C-o><C-y> 

這種方式和預期的一樣,但它有一個很大的缺陷。它葉片插入模式,滾動,然後重新進入插入模式。這與撤消,重複命令等有關,我希望能夠在不離開插入模式的情況下上下滾動。思考?

+0

什麼習慣的Vim的模型相互作用? – romainl

+0

@romainl:當然,但我看不出任何合理的理由,爲什麼我不應該在插入模式下將視口拖到幾行以獲取特定的行。 – Hubro

+0

任何人發佈第二個答案:你爲什麼刪除它? :(這是非常豐富的。 – Hubro

回答

9

你可以看看:h i_CTRL-X_CTRL-E,這是一個內置的插入模式映射到滾動:

    *i_CTRL-X_CTRL-E* 
CTRL-X CTRL-E  scroll window one line up. 
     When doing completion look here: |complete_CTRL-E| 

        *i_CTRL-X_CTRL-Y* 
CTRL-X CTRL-Y  scroll window one line down. 
     When doing completion look here: |complete_CTRL-Y| 
你的情況

所以,這可能會做的伎倆:

inoremap <C-e> <C-x><C-e> 
inoremap <C-y> <C-x><C-y> 
+0

+1這非常酷,並解決了我的問題,但並沒有完全回答這個問題。如果你知道,你可以添加是否有一個內置的Vim滾動功能? – Hubro

+0

那麼,你也可以使用鼠標滾動,拖動滾動條或使用PageUp和PageDown在插入模式下滾動,但這些都將移動光標,這可能不是你想要的。無論如何,在正常模式下進行滾動可能更像Vim-esque。 –

+1

似乎沒有任何滾動窗口的內置函數,因此腳本/別名助記符儘可能接近您可以得到的。即使保存的會話和視圖也不能記住精確的窗口滾動位置。在梳理vimscript函數(http://vimdoc.sourceforge.net/htmldoc/eval.html#functions)和選項(http://vimdoc.sourceforge.net/htmldoc/options.html)後,我得出了這個結論。 )參考。 – Daniel

2

undojoin固定它的撤消部分:

ino <C-E> <Space><BS><ESC><C-E>:undojoin<CR>gi 

<Space><BS>小號等號確保有一個撤消塊加入。

令人驚訝的(對我來說)這並不與.破損幫助,所以這可能會離開你一樣討厭,你在現在是一個點...

相關問題