我正在使用vim进行编程.在一天开始时,我将打开一个文件并继续进行几个窗口拆分并将一些文件打开到缓冲区中,以便它们随时可用.直到最近,这才起作用.
然而,在过去一周左右,情况发生了变化; 我的一个可写缓冲区正在切换到只读,我不明白为什么.这是命令序列:
对于步骤1-4,所有窗口都是可编辑的.当我执行步骤5时,新文件浏览窗口是只读的(如预期的那样),但现在持有fileA.cpp的窗口也被标记为只读.fileA.h仍然可以编辑.为什么会这样?
为了让我更加困惑,如果我不做第4步就没有问题(即我将窗口分开,保存fileA.cpp而不是fileA.h).另外,如果我在步骤5中执行'sp fileB.h'而不是首先拆分到文件浏览器,则没有问题.
Chr*_*sen 34
看起来这可能是netrw插件中的一个错误.我测试了几个版本的netrw和两个版本的Vim 7.3(MacPorts vim
7.3-353和MacPorts MacVim
"snapshot64"7.3-390):
vim
:7.3-353)vim.org/scripts
netrw页面)vim.org/scripts
netrw页面)MacVim
:7.3-390)您可以查看您的活动netrw版本:let g:loaded_netrwPlugin
.
v140到v142在复制场景时都有合理的行为:
sp .
;右侧,上部窗口)是只读的.左侧窗口中fileA.cpp
缓冲区仍为非只读.使用v143和v144b,我能够重现您的行为:
fileA.cpp
缓冲区(左侧)都变为只读.fileA.cpp
左侧的窗口成为活动窗口.sp .
)应该是活动的. 该fileA.cpp
窗口最初是(从NETRW窗口vsp .
).我的猜测是v143和v144b中的某些内容由于某种原因重置旧窗口有点过于热心(它可能根本不应该触及那个窗口).sp fileB.h
通过不调用netrw来避免这个问题(即问题不在于拆分窗口,而是在创建目录列表缓冲区时netrw所做的事情).
如果你的问题来自netrw(即你的行为符合我的描述,你的目录列表缓冲区有文本Netrw Directory Listing
和(例如)(netrw v143)
在第二行 - 假设你没有禁用netrw横幅),那么你可以修复它通过安装较旧的(?)版本的netrw(即v142).
netrw被打包为"vimball档案".vimball插件附带Vim 7.0及更高版本.您只需要一个vimball文件来将其安装到您runtimepath
(通常~/.vim
)的第一个目录中.
:e /path/to/netrw.vba.gz
:so %
:q
Run Code Online (Sandbox Code Playgroud)
如果您使用病原体来隔离您的Vim插件(强烈推荐!),您可以将其安装到捆绑目录中:
:e /path/to/netrw.vba.gz
:UseVimball ~/.vim/bundle/netrw
:q
Run Code Online (Sandbox Code Playgroud)