在我的计算机上工作时,无论何时打开位于网络共享上的文件,GVim都会完全无法使用。滚动文档可能需要15秒才能进入一个“页面”。即使使用移动键从一个单词转到另一个单词也需要2到3秒。这似乎是一种新的行为,但对于我的生活,我记不起改变会导致它的任何事情。我的印象是Vim实际上并没有访问文件,除了打开和保存。是吗?
答案 0 :(得分:10)
有几个因素可能会影响这一点。
首先,确保您已将Vim设置为首选本地存储交换文件。如果您的$HOME
位于本地驱动器上,我倾向于将其放在我的vimrc中(可以是$HOME\_vimrc
或$VIM\_vimrc
)。确保创建该目录,否则Vim将继续使用列表中的其他目录之一。
set directory^=$HOME/tmp
这会将$HOME/tmp
目录添加到列表的开头,Vim会检查交换文件的放置位置。
其次,对Vim创建的备份文件执行相同操作。与上述情况相同,但您要更改的选项是backupdir
,而不是directory
。
第三,确保禁用matchparen插件。此插件是Vim 7的新增功能,因此您可能习惯使用旧版本的Vim。这导致频繁扫描文件以匹配parens,braces等,当文件在网络共享上时,这可能会大大降低Vim的速度。同样,这应该放在你的vimrc中。
let g:loaded_matchparen = 1
如果您只想暂时禁用该插件,可以使用命令:NoMatchParen
然后:DoMatchParen
稍后在该Vim会话中重新启用它。
最后,如果这些都没有帮助,您可以随时在本地复制文件并进行编辑。
答案 1 :(得分:5)
交换文件与它无关。我有我的交换文件本地,仍然有问题。我使用来自SysInternals.com的Process Monitor,它在尝试打开“\ server \ TestTool \ foo \ ReadMe.TXT”时显示出不良行为
首先尝试在“\ serve \”上创建一个CreateFile(又名,打开目录)。注意最后一个字符丢失了。这将导致“OBJECT PATH INVALID”超时4秒。
然后它在“\ server \ TestToo \”上尝试CreateFile。通过“TestTool”的最后一个字母剪切服务器名称是正确的。再次,用“BAD NETWORK NAME”时间超过3秒。
最后它正确并在“\ server \ TestTool \”上调用CreateFile,它立即可用。 然后在“\ server \ TestTool \ foo”上的CreateFile立即生效。 然后在“\ server \ TestTool \ foo \ ReadMe.TXT”上创建CreateFile,它立即可用。
为什么要为服务器和根目录尝试坏名称???这有什么疯狂的?
答案 2 :(得分:3)
我在高级系统设置中强制设置HOME路径后修复了此问题。 (您当前的HOME路径将是网络目录。)
控制面板&gt; <控制面板的所有项目>系统&gt;高级系统设置&gt;环境变量
按“新建...”
变量名称: HOME
变量值:
c:\Home\ **<-- Type your home directory**
答案 3 :(得分:2)
跟进jamessan的回答:当您编辑共享上的文件时自动禁用该插件,将此行添加到您的_vimrc
autocmd BufReadPre //* :NoMatchParen
答案 4 :(得分:1)
您可以考虑安装LargeFile插件。它禁用了一些影响性能的功能。
答案 5 :(得分:1)
遇到与 David Anderson 类似的问题,但还没有解决方案。
加载\\ServerName\A$\B\C\File.txt
时Vim会这样做:
然后它执行许多循环,如:
要比较几乎瞬间加载文件的Notepad ++有更多行,而Notepad ++从不查询\\ServerName\A$
。
此外,在Process Monitor中写入的持续时间(持续时间列)很低,但是对于CreateFile,Vim所花费的时间似乎很高(时间列) {1}}。
据我所知,我没有安装任何插件,并遵循其他提示来加速网络共享加载。
注意:美元在路径中。更奇怪的是, Vim将在更新的 Windows Server (2008而不是2003)上加载非常快的,具有相同的文件夹结构。
答案 6 :(得分:0)
我遇到了同样的问题(通过网络驱动器进行缓慢的gvim编辑)并已解决。是给我的-不是在开玩笑-titlestring
。
背景:我在Windows 10中使用垂直排列的任务栏。这样做的好处是,打开的窗口的行为就像从上到下的堆栈一样。例如,在这里看到一些how-to-run.txt
作为网络文件的当前打开的窗口:
从这个意义上说,文件名在gvim的窗口标题中排在 first 之前,路径在此之后。因此,我在titlestring
中完全使用了vimrc
,但仍在帮助文件vim81/doc/options.txt
的第8202行中正式建议使用该变量:
set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:.:h\")})%)%(\ %a%)
对于本地文件来说还可以,但是对于网络文件来说太慢了。
现在修复:
set titlestring=
效果相同(文件名优先),但是现在gvim对于远程文件也运行非常快!
顺便说一句,我也尝试了上述所有建议(directory
,backupdir
,matchparen
,禁用了所有插件,尝试了LargeFile
插件,尽管我观察到速度很慢gvim也适用于小文件等)。我也将statusline
更改为非常简单的内容。
全部对我没有影响。但是有趣的titlestring
...