在Mac Terminal / iTerm中顺利滚动vim?


13

是否可以在Mac OSX(Lion)的终端中进行平滑滚动(使用鼠标滚轮或Macbook触摸板)?此外,我可以在vim内执行此操作吗?

我发现平滑滚动有助于阅读代码,但是当您只能滚动离散的行而不是连续的逐像素滚动时,我不喜欢它。

谢谢


如果您使用的是Vim的应用程序,而不是一个终端会话(内使用它,你可能有更好的体验code.google.com/p/macvimmacvim.org/OSX)。您是否有理由在终端内使用它?
克里斯·佩奇

3
MacVim也不提供平滑滚动。
romainl 2012年

嗨@romainl。我想知道如果缓冲区大小(窗口大小)真的很大(即整个文件的大小),vim的行为如何。要测试一下。然后,我们可以在平滑滚动的GTK(或QT)小部件内放置一个vim缓冲区,然后在小部件内平滑滚动整个vim缓冲区。这样做的好处是,可以像现代编辑器一样轻松隐藏光标。当用户移动光标时,小部件将知道(使用gVim使用的相同API)并相应地更新滚动位置。
trusktr

(续)甚至可以通过将vim的完整文件长度的输出复制到一个新的小部件中,然后将小部件平滑滚动到适当的位置来完成窗口拆分。所有这些都需要一些简单的算法以及对好的窗口小部件工具箱的充分了解。窗口拆分(水平和垂直)以及滚动和调整小部件的大小就可以了。其余的事情很容易做到(菜单,选项卡,gVim和qVim已经完成的事情)。
trusktr

(续)。这也有可能大大提高vim的性能。考虑一下:每次滚动控制台vim或g / qvim窗口(当前)时,vim必须重写屏幕上的几乎每个字符。如果vim缓冲区是全长的,并且滚动是由平滑滚动的小部件独立处理的,则每次将光标移至新行时,vim只需一次更新一行的字符数(或者更妙的是,字符,当您向前或向后移动一个字符时)。这将是vim的巨大性能优势!
trusktr

Answers:


5

我正在使用iterm2,并且在终端中使用vim 7.3使用以下选项发现了非常不错的功能:

set mouse=niv #or set mouse=a
set clipboard=unnamed

编辑:设置mouse = a看起来也很酷,如其他建议所示。

它的作用是自动将您从选择文本时的正常模式切换到视觉模式,或从插入模式切换为显示((插入)VISUAL)模式。与根本不设置这些模式相比,这还有一个方便的优势,因为当您获得行号或相对行号时,它将继续复制您可能不想复制的那些号。当它以这种方式使您进入启用鼠标的可视模式时,它将避免复制那些行号,因为它可以控制可视模式选择,而不是控制本机终端的选择(此选项将被取消)。滚动在整个过程中都可以正常工作,请记住,它会选择从您开始选择的位置到屏幕底部的所有内容。忘记vim中的ctrl + c / ctrl + v-您可以使用vim yankypasta命令(y,yy,p,

http://vim.wikia.com/wiki/Mac_OS_X_clipboard_sharing#Comments

再次,iterm2-osx的内置终端是垃圾桶。我真的看不到行滚动显示您的牛肉,因为我对它在vim中的功能感到满意,但也许是出于与我无法观看其他人一起玩视频游戏的类似原因晕车或为何萤光灯和CRT显示器的闪烁使人的头混乱到偏头痛。尝试调整大脑的刷新率,如果您用力按入太阳穴并转动,就会感觉到旋钮。


0

我真的不同意您的意见,但是这里有一个Terminal.app插件,可以满足您的更多需求。

您可能需要添加

set mouse=a

到您的.vimrc。请参阅:help mouse以获取更多信息。


不幸的是,插件需要SIMBL,这不适用于狮子
埃迪

我不知道,因为我没有狮子。MouseTerm是将鼠标滚动添加到我听说过的Terminal.app的唯一方法。似乎有些人报告说在Lion上使用SIMBL的成功有限,您尝试过吗?我还看到iTerm2提供了“鼠标报告”和滚动功能,但它可能会逐行滚动。作为一个方面说明我很难滚动(上/下/ J / K)了:我发现/?fFtT<C-f>/ <C-b>更为有用。
romainl 2011年

请注意,这些功能可以使鼠标滚轮滚动工作,但是它们并没有解决主要问题:“当您只能在离散行中滚动而不是连续逐像素滚动时,我不喜欢它。”
克里斯·佩奇

这种滚动(逐行)滚动在Vim中进行了硬编码。幸好没有办法解决它。如果确实需要它,则应该在vim-dev上用措辞严谨的参数坚持或提供补丁。
romainl 2012年

我想要平滑滚动的原因是,在离散地滚动行时,我倾向于失去位置。很难解释。也许对所有人没有影响,但对我却有帮助
Eddy 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.