如何在不离开插入模式的情况下向上/向下滚动?

时间:2013-01-13 20:48:19

标签: vim

在Vim普通模式下,您可以按 ctrl + e ctrl + y 向下滚动分别。我正在尝试创建一个键绑定,让我也可以从插入模式执行此操作。这就是我所拥有的:

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

这有点像预期,但它有一个很大的缺陷。 离开插入模式,滚动,然后重新进入插入模式。这在撤消,重复命令等方面是相关的,我希望能够在不离开插入模式的情况下向上和向下滚动。想法?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:2)

undojoin修复了它的撤消部分:

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

<Space><BS>序列确保有一个撤消块可以加入。

令人惊讶的是(对我来说)这对.破坏没有帮助,所以这可能会让你像现在一样烦恼...