vim – 为什么窗口分裂强制只读?

前端之家收集整理的这篇文章主要介绍了vim – 为什么窗口分裂强制只读?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用vim进行编程.在一天的开始,我将打开一个文件,继续进行几个窗口分割,并将一些文件打开到缓冲区,以便它们随时可用.直到最近才刚刚奏效.

在最后一个星期左右,有些事情发生了变化;我的一个可写缓冲区正在转换为只读,我不知道为什么.这是命令的顺序:

>打开fileA.h
> vsplit ./
>打开fileA.cpp
> C-w C-w切换到包含fileA.h的窗口
> sp ./

对于步骤1-4,所有窗口都是可编辑的.当我执行步骤5时,新文件浏览窗口只读(如预期的那样),但现在保持fileA.cpp的窗口也被标记为只读. fileA.h仍然可以编辑.为什么会发生这种情况?

为了混淆我更多,如果我不做第4步没有问题(即我拆分窗口保存fileA.cpp而不是fileA.h).另外,如果我在步骤5中做“sp fileB.h”,而不是先分割到文件浏览器,那么没有问题.

看起来这可能是netrw插件中的错误.我用几个版本的netrw测试了两个版本的Vim 7.3(MacPorts vim 7.3-353和MacPorts MacVim“snapshot64”7.3-390):

> v140(包含在MacPorts vim:7.3-353)
仅使用MacPorts vim版本进行测试.
> v141(从vim.org/scripts netrw page)
> v142(从vim.org/scripts netrw页面)
> v143(包含在MacPorts MacVim:7.3-390)
仅使用MacPorts MacVim版本进行测试.
> v144b(从netrw author’s Vim page开始预发行)

您可以通过以下方式检查您的活动netrw版本:let g:loaded_netrwPlugin.

v140到v142在复制场景时都有合理的行为:

>只有netrw缓冲区(从sp.;右侧,上部窗口)是只读的.
左侧窗口中的fileA.cpp缓冲区保持不可读.

使用v143和v144b,我能够重现你的行为:

> netrw缓冲区(右侧,上部窗口)和fileA.cpp缓冲区(左侧)都变为只读.
>另外(即OP没有报告但似乎相关),左侧的fileA.cpp窗口成为活动窗口.
通常,右侧,上部窗口(来自sp.)的窗口应该处于活动状态.

fileA.cpp窗口最初是一个netrw窗口(从vsp.).我的猜测是,v143和v144b中的某些东西因为某些原因重置旧窗口而有点过分(根本不应该触摸该窗口). sp fileB.h通过不调用netrw来避免这个问题(即问题不在于拆分窗口,而是netrw在创建目录列表缓冲区时所做的事情).

如果您的问题来自netrw(即您的行为符合我的说明,您的目录列表缓冲区具有文本Netrw目录列表和(例如)(netrw v143)在第二行 – 假设您没有禁用netrw横幅),那么您可以通过安装较旧的(?)版本的netrw(即v142)来解决这个问题.

netrw被打包成“vimball档案”. vimball插件自带Vim 7.0及更高版本.您只需输入一个vimball文件即可将其安装到runtimepath的第一个目录(通常为〜/ .vim).

:e /path/to/netrw.vba.gz
:so %
:q

如果您使用pathogen隔离Vim插件(强烈推荐!),则可以将其安装到捆绑包目录中:

:e /path/to/netrw.vba.gz
:UseVimball ~/.vim/bundle/netrw
:q

猜你在找的Bash相关文章