我在终端中使用Vim,因此使用滚轮滚动使用\e[A\e[B语法(其中\e表示\x1b或转义)。

但是,Vim通过向上或向下移动光标来解释下线。理想的行为是像<C-e><C-y>一样向上或向下移动屏幕。

使用滚轮时如何告诉Vim移动屏幕,同时保持光标在同一位置线?这应该适用于所有常见模式(插入,普通,可视选择)。

我已经尝试过,例如:nnoremap <esc>[A <C-e>(用插入Ctrl + V Esc的文字转义字符代替<esc>),但这被证明是徒劳的。

我在带有GNOME的Ubuntu 14.04上使用Vim 7.4.52。

评论

您可以将问题限制在操作系统或窗口环境中吗?

@ 200_success好吧,我已经将环境编辑成问题。

我认为这个问题也应标记为“终端”。是否会因为回答而无法编辑?

#1 楼

正如@Doorknob在评论中所说,:set mouse=a解决了该问题。

评论


有没有一种方法无需设置mouse = a?我不希望偶然的点击弄乱我的编辑流程。

– wchargin
15年4月24日在23:23

鼠标中的a = a代表所有(不附加)。来自:help mouse:“可以为不同的模式启用鼠标...通常,至少在我启用vim时,只要启用,它就可以在所有四种模式下使用:set mouse = a来启用鼠标:使用模式切换(只需启用滚动-并“单击以转到该行”)

– Faix
17年8月27日在21:42

尽管此线程很旧,但对于想要设置mouse = a而又不会意外点击弄乱流量的人,:map 可以解决问题。

–晴天双关语
17年11月21日在6:08

#2 楼

我知道这已经晚了几年,但是您可以使用
nmap <Down> <C-e>
nmap <Up> <C-y>
这对我有用。

评论


欢迎来到Vi和Vim!

– D. Ben Knoble♦
20-11-08在17:14

#3 楼

您想要的行为是在我的vim上发生的。我找不到打开/关闭它的设置。也许检查:help滚动? scrolloff可能会涉及。

您也可以考虑使用标记作为解决方法。



ma(设置标记'a')
根据需要滚动屏幕

`a(发送光标以标记“ a”)


评论


即使没有加载我的vimrc(vim -u NONE),我也会得到这种行为。这是带有GNOME的Ubuntu 14.04上的Vim 7.4。

–门把手
2015年2月3日在23:05



@Doorknob然后我得到窗口而不是没有我的.vimrc的光标移动(只需将mouse = a设置)。 :help scrolling表示滚动行为是特定于平台的。我在OSX的iterm2中使用vim。

–bsmith89
2015年2月3日在23:07



啊哈! :set mouse = a为我解决了这个问题。将其编辑为您的答案,我会接受的。谢谢!

–门把手
2015年2月3日在23:08