获取vimrc文件的Vim目录

时间:2016-11-05 13:42:50

标签: vim

如何获取目录Vim正在调查'?我想将vimrc平台设置为独立,因此我不想放置显式目录。在Linux上,例如vim在~/.vim中查看~\vimfiles和Windows。如何获取使用的目录,将我的文件放在那里?

2 个答案:

答案 0 :(得分:1)

我不能说这是我们从未需要的信息,因为我有一个用途。

在lh-vim-lib中,我以这种方式进行(在lh#path#vimfiles()中):

  • 首先,我从$ HOME构建一个正则表达式(即我将所有斜杠和反斜杠替换为[/\\])::let regex = substitute($HOME, '[/\\]', '[/\\\\]', 'g')
  • 然后我追加可能的目录:let regex .= '\(vimfiles\|.vim\)'
  • 最后,我将我的正则表达式搜索到& rtp。最短的结果是好的。 :let paths = filter(split(&rtp, ','), 'match(v:val, regex) != -1') + :return paths[lh#list#arg_min(paths, function('len'))]

注意:真正的代码对错误有点复杂,通用和弹性(/抵抗?)。

PS:因为cygwin,测试has('win32')是不够的。

编辑:我被要求提供lh#list#arg_min()定义。它可以在lh-vim-lib中找到。它的定义很简单,有点麻烦(IMO)

function! lh#list#arg_min(list, ...) abort
  if empty(a:list) | return -1 | endif
  let Transfo = a:0 > 0 ? a:1 : function(s:getSNR(id))
  let m = Transfo(a:list[0])
  let p = 0
  let i = 1
  while i != len(a:list)
    let e = a:list[i]
    let v = Transfo(e)
    if v < m
      let m = v
      let p = i
    endif
    let i += 1
  endwhile
  return p
endfunction

答案 1 :(得分:0)

您可以覆盖默认的execvpe(),以使Vim在Windows上使用相同的'runtimepath'。只需将其放入~/.vim/

即可
~/.vimrc