Vim中的最大路径长度

Vim中的最大路径长度,vim,windows-7-x64,Vim,Windows 7 X64,我在Windows7上使用Vim7.3 路径上的文档说明 最大长度是有限的。多少取决于系统,主要是256或1024个字符 然而,当我执行:echo strlen($path)时,我得到了2533。我很高兴它超过1024个。这让我想知道最大长度是否由文档中未反映的其他设置控制 这是我的_vimrc文件中的内容 set path =. set path+=../include set path+=$WORK_DIR/include set path+=$WORK_DIR set path+=$WOR

我在Windows7上使用Vim7.3

路径上的文档说明

最大长度是有限的。多少取决于系统,主要是256或1024个字符

然而,当我执行
:echo strlen($path)
时,我得到了2533。我很高兴它超过1024个。这让我想知道最大长度是否由文档中未反映的其他设置控制

这是我的_vimrc文件中的内容

set path =.
set path+=../include
set path+=$WORK_DIR/include
set path+=$WORK_DIR
set path+=$WORK_DIR/source/library/cmtabstractmodel
set path+=$WORK_DIR/source/library/cmtacisgeometry
set path+=$WORK_DIR/source/library/cmtapi
set path+=$WORK_DIR/source/library/cmtcad
set path+=$WORK_DIR/source/library/cmtdesignspaceexploration
set path+=$WORK_DIR/source/library/cmtenvironment
set path+=$WORK_DIR/source/library/cmtevent
set path+=$WORK_DIR/source/library/cmtexternaltask
set path+=$WORK_DIR/source/library/cmtfield
set path+=$WORK_DIR/source/library/cmtgeometricutility
set path+=$WORK_DIR/source/library/cmtgeometry
set path+=$WORK_DIR/source/library/cmtgraphics
set path+=$WORK_DIR/source/library/cmtgraphicsutility
set path+=$WORK_DIR/source/library/cmtinertiaspecification
set path+=$WORK_DIR/source/library/cmtkernel
set path+=$WORK_DIR/source/library/cmtlibrary
set path+=$WORK_DIR/source/library/cmtmesh
set path+=$WORK_DIR/source/library/cmtmultibodydynamics
set path+=$WORK_DIR/source/library/cmtnastranutility
set path+=$WORK_DIR/source/library/cmtoptical
set path+=$WORK_DIR/source/library/cmtplugin
set path+=$WORK_DIR/source/library/cmtprocess
set path+=$WORK_DIR/source/library/cmtproject
set path+=$WORK_DIR/source/library/cmtscheme
set path+=$WORK_DIR/source/library/cmtsettings
set path+=$WORK_DIR/source/library/cmtsimulationtask
set path+=$WORK_DIR/source/library/cmtsystemconsole
set path+=$WORK_DIR/source/library/cmtthermal
set path+=$WORK_DIR/source/library/cmttranslator
set path+=$WORK_DIR/source/library/cmtutility
set path+=$WORK_DIR/source/library/cmtvgi
set path+=$WORK_DIR/source/library/cmtxml
set path+=$QT_ROOT/include/QtCore
set path+=$QT_ROOT/include/QtGui
set path+=$QT_ROOT/include/QtXml
set path+=$ACIS_ROOT/include
set path+=$ACIS_ROOT/scm/scm/include
set path+=$ACIS_ROOT/scm/scmext/include
if s:MSWIN
   set path+=C:/Program\ Files/Microsoft\ Visual\ Studio\ .NET\ 2003/Vc7/include
else
   set path+=/usr/include/g++-3
   set path+=/usr/X11R6/include
endif
set path+=$EXTERNAL_ROOT/PTC/proeWildfire-2.0/protoolkit/includes

注意:扩展选项的最大长度是有限的。多少取决于
系统,通常是256或1024个字符。

根据函数的文档:

用户定义的环境变量的最大大小为32767个字符。有关详细信息,请参阅

对于Windows XPWindows Server 2003来说,环境变量似乎没有直接限制,而是:

Windows Server 2003和Windows XP:进程的环境块的总大小不能超过32767个字符

但是请注意,大多数程序在读取变量环境时都会截断它。因此,我建议您使用本文提出的方法之一

多少取决于系统,主要是256或1024个字符

这似乎表明最大长度因计算机而异

实际上,最大长度似乎比文档中给出的估计值要大得多,所以不必太担心这个限制

理论上,我猜想路径的最大长度取决于Vim可用的内存量,可以编辑:

选项“maxmem”(“mm”)用于设置用于存储的最大内存 一个缓冲区(以千字节为单位)。'maxmemtot'用于设置最大值 用于所有缓冲区的内存(以KB为单位)。默认值取决于 使用的系统。对于Amiga和MS-DOS,设置了“maxmemtot” 取决于可用的内存量


编辑:重新阅读您的帖子和评论,发现您在询问理论上的最大值。

我自己发现了以下内容,这可能对您/其他人有所帮助:

  • 事实上,您可以按照自己的意愿执行任意多个
    设置路径+=…
    (最多只尝试了20k个字符),并且它可以正常工作!维姆按照你的期望去做。然而:
  • 如果将所述
    设置路径+=…
    命令存储在手动编辑的Session.vim文件中,您可能会发现它被
    :mks(Session)覆盖命令,其中只有一行包含
    设置路径=…
    命令,并且只有(!)4k字符长;唯一的解决方法是保留所述Session.vim文件的备份副本,并在所述
    :mks(hit)发生
  • 此外,无论何时从Vim自身的提示符将其称为
    :set path
    ,则仅显示所述~4k字符

HTH

这是一条非常长的
$PATH
路径,但您所指的
路径不是
$PATH
。使用
&path
检查
路径
选项的值。参考:
:help expr选项
:help expr env
@romainl,
:echo strlen(&path)
打印2178。这仍然大于文档中所说的最大值。@benjifisher,谢谢你的提示。Hmmm,Windows上的
path
的默认值是
,所以我想知道你是怎么把它弄得这么大的。我可以理解10个、20个甚至100个字符,但2178个字符?我不是说windows环境变量。我说的是vim设置/变量。