为什么Vim不在此命令中执行我的列设置?

时间:2013-06-29 16:39:11

标签: vim macvim

我有一个Vim命令进入“无分心”模式:

command! DistractionFreeMode set guioptions-=r gfn=Cousine:h12 showtabline=0 fullscreen laststatus=0 noruler wrap linebreak nolist linespace=5 foldcolumn=3 nonumber columns=80 

另请注意我使用的是MacVim。命令排序有效,但似乎没有触发某些设置。其中包括columns=80nolist。我总是必须在执行此命令后单独设置它们才能使它们正确。我也尝试将这些设置放在我用命令调用的函数中并且遇到了同样的问题。这个问题的根源是什么?

编辑:这是我瞄准的外观的截图。据我所知,有必要一起使用fullscreencolumns来实现这一目标:

enter image description here

1 个答案:

答案 0 :(得分:2)

根据全屏帮助(:h fullscreen)可以选择定制进入全屏模式时所发生情况的行为fuoptions

在我的MacVim上,fuoptions设置为

fuoptions=maxvert,maxhotz

当我们查看:h fuoptions

    maxvert When entering fullscreen, 'lines' is set to the maximum number
            of lines fitting on the screen in fullscreen mode. When
            leaving fullscreen, if 'lines' is still equal to the maximized
            number of lines, it is restored to the value it had before
            entering fullscreen.
    maxhorz When entering fullscreen, 'columns' is set to the maximum number
            of columns fitting on the screen in fullscreen mode. When
            leaving fullscreen, if 'columns' is still equal to the maximized
            number of columns, it is restored to the value it had before
            entering fullscreen.

这意味着当您进入全屏模式时,MacVim会调整到最大行数和列数。 (忽略你设定的值)

要解决此问题,您可以添加set fuoption-=maxhorz以删除违规选项,也可以添加set=maxvert以强制它仅使用maxvert,无论是否设置了其他选项。这会阻止MacVim在水平方向上覆盖您的设置。

所以你的固定命令看起来像

command! DistractionFreeMode set guioptions-=r gfn=Cousine:h12 showtabline=0 fuoptions-=maxhorz fullscreen laststatus=0 noruler wrap linebreak nolist linespace=5 foldcolumn=3 nonumber columns=80