vim:打开预览窗口而不移动主窗口中的文本

11
当omni-completion(或其他内容)打开预览窗口时,为了给预览窗口腾出空间,主窗口的大小会被减小。
默认情况下,在预览窗口弹出之前,主窗口中可见的第一行在预览窗口弹出后仍然保持不变。这会导致主窗口中的文本在视觉上被向下推动。
我希望主窗口中的文本保持原位。这实际上意味着当预览窗口弹出和关闭时,主窗口中可见的第一行需要改变。
有人知道实现这个的好方法吗?
4个回答

3

我在寻找解决此问题的方法时遇到了这个问题(尽管我不使用 omni-completion,但其他窗口也会干扰窗口滚动位置)。我找不到一个好的解决方案,这真的很困扰我,所以最终我编写了一个小的 vim 插件来解决这个问题。

https://github.com/gillyb/stable-windows

我认为它完全可以满足你的需求。我最近才编写了它,所以如果有任何错误,请随时提出问题,我会尽力修复它们。
希望能帮到你! :)

3

我不知道如何触发它,但使用::normal! Hmx`` 来保存当前窗口位置,而使用 :normal! `xzt`` 来恢复它。


2
有一个新的neovim插件叫做“Stabilize”来处理这个问题。即使是上面提到的“stable windows”插件的作者也已经转移到NeoVim和“Stabilize”上了。
我只用了几分钟,但总体来说,这似乎完美地解决了我在分屏和快速修复列表中遇到的当前行跳转问题。

https://github.com/luukvbaal/stabilize.nvim


1
截至2022年9月,vim引入了原生选项splitkeep
设置选项set splitkeep=screen可以实现所需的行为。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接