2

对我来说,我认为情况如下:

$VIMRUNTIME='C:/Program Files (x86)/Vim/vim73'

但是如果我查看电脑的环境变量(通过计算机>属性等),我看不到这条路径 - 我应该手动添加它吗?

_vimrc当前如下所示:

set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin

set diffexpr=MyDiff()

" Use CTRL-S for saving, also in Insert mode
:nnoremap <C-S>     :<C-U>update<CR>
:vnoremap <C-S>     :<C-U>update<CR>gv
:cnoremap <C-S>     <C-C>:update<CR>
:inoremap <C-S>     <C-O>:update<CR>

function MyDiff()
  let opt = '-a --binary '
  if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
  if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
  let arg1 = v:fname_in
  if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
  let arg2 = v:fname_new
  if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
  let arg3 = v:fname_out
  if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
  let eq = ''
  if $VIMRUNTIME =~ ' '
    if &sh =~ '\<cmd'
      let cmd = '""' . $VIMRUNTIME . '\diff"'
      let eq = '"'
    else
      let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
    endif
  else
    let cmd = $VIMRUNTIME . '\diff'
  endif
  silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction
4

2 回答 2

2

No.$VIMRUNTIME是一个特殊的环境变量,由 Vim 自动设置。

:help $VIMRUNTIME早就告诉你了:

您通常不会自己设置 $VIMRUNTIME,而是让 Vim 自己解决。

了解优秀和全面:help的结构;所有的信息都在那里(你只需要知道如何找到它)!

于 2013-05-08T12:08:26.620 回答
1

尽管 vim 帮助文件将 $VIMRUNTIME 描述为环境变量,但您可能会发现它没有在您的 shell 中设置。

它应该在 Vim 中设置,并且您应该能够在 Vim中看到它,因此:

:echo $VIMRUNTIME

非常有用的 Vim 帮助文件没有解释这一点。

但是他们确实详尽地描述了 Vim 在它自己的,呃,运行时环境中为 $VIMRUNTIME 导出值所经历的步骤。

如果你有某种形式的强迫症,你可能会仔细阅读这个密集的帮助文本,在最底部看到它说如果你的 shell 中需要 $VIMRUNTIME,你可以使用以下命令获取它:

VIMRUNTIME=`vim -e -T dumb --cmd 'exe "set t_cm=\<C-M>"|echo $VIMRUNTIME|quit' | tr -d '\015' `

尽管有外表,但这并不是什么玩笑。我重复:

VIMRUNTIME=`vim -e -T dumb --cmd 'exe "set t_cm=\<C-M>"|echo $VIMRUNTIME|quit' | tr -d '\015' `
于 2021-09-08T12:30:13.683 回答