gVim是否可以记住窗口大小?

37

我知道如何在gVim中设置初始窗口大小,但是如何使其自动恢复上次会话的窗口尺寸呢?这可能吗?

6个回答

16

编辑:更正了我的答案。提到的winsize会话选项仅涉及vim内部窗口布局,而不涉及外部尺寸。


如果您使用

:mksession

并在 Vim 启动时加载会话,使用:

gvim -S Session.vim

您可以通过在sessionoptions中包含winpos和resize来将窗口位置和大小包含在会话中,参见:

:help  'sessionoptions

使用自动命令,甚至可以在进入和退出 Vim 时自动保存和恢复会话。


1
谢谢您的回答!我对Vim还是比较新手,所以在自动命令方面经验不是很丰富。我该如何使它们在进入和退出时触发? - Charles Roper
请参阅 :help autocommand,特别是 GUIEnter、VIMEnter、VIMLeave 事件看起来很有前途。 - user55400
1
会话保存还会保存最后打开的文件,当使用Vim打开单个文件时,它往往会忽略这些文件。在Wikia上有一个脚本可以更干净地完成这个任务(即不会干扰其他会话元素):http://vim.wikia.com/wiki/Restore_screen_size_and_position - Andrei Sosnin

12

这些代码保存和还原了元素的位置和尺寸:

set sessionoptions+=resize,winpos
autocmd VIMEnter * :source C:/session.vim
autocmd VIMLeave * :mksession! C:/session.vim

4
这是个好主意,但会话保存也会保存最后打开的文件,当使用 Vim 打开单个文件时会忽略这些文件。维基百科有一个脚本,以更清晰的方式实现此功能(即不干扰其他会话元素):http://vim.wikia.com/wiki/Restore_screen_size_and_position - Andrei Sosnin

7
此外:
在您的 .vimrc 文件中:
set ssop+=resize,winpos,winsize,blank,buffers,curdir,folds,help,options,tabpages

接下来,使用这篇文章中的脚本。它非常好用!


请问您能描述一下所引用的脚本与您建议的会话选项之间的关系吗?为什么它们是必需的?那个脚本自己管理一切(将窗口大小和位置保存在一个自定义文件中)。 - undefined

4

我有同样的问题,为了进一步解答上面的答案,你可以在你的.vimrc文件中简单添加以下内容以获得所需的行为:

set sessionoptions+=resize,winpos

参见:h ssop


你是不是漏掉了什么?在我的情况下没有起到帮助作用(Ubuntu 22.04,gVim 8.2)。我还添加了winsize,但它没有任何影响。 - undefined
这些会话选项控制会话管理的行为,但会话不会自动保存,因此它本身不起作用。 - undefined

2
gvim -geom 85x55

比如,在你的 .bashrc 文件中添加以下内容:

alias G='gvim -geom 85x55'

恐怕这只在从bash运行gVim时有效。要使其成为真正通用的解决方案,您需要将这些命令行参数添加到许多其他地方。 - undefined

1
如果您希望每次打开vim时都是相同的大小,您可以编辑用户的vimrc文件,路径为C:/Users/<yourUserName>/_vimrc(这比编辑vim安装文件夹中的系统_vimrc文件更好)。在文件中添加以下行:set lines=<yourHeight> columns=<yourWidth>

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