Windows版vim的默认vimrc文件的说明

pic*_*323 11 windows vim default

我刚刚下载了vim7.4 for windows,我想知道它附带的默认vimrc文件是做什么的.只需对每个项目进行简要说明即可.这里是.

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

set diffexpr=MyDiff()
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
Run Code Online (Sandbox Code Playgroud)

rom*_*inl 21

set nocompatible
Run Code Online (Sandbox Code Playgroud)

默认情况下,Vim的行为与其祖先vi相似.这对于快速编辑来说并不是一个真正的问题,但如果您打算使用它超过10分钟,它会非常糟糕.set nocompatible使Vim比Vi更像Vim.

:help nocompatible.

source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
Run Code Online (Sandbox Code Playgroud)

来源这两个文件.vimrc_example.vim包含示例设置.看看它可能是一个好主意:它可能包含有用的东西.

behave mswin
Run Code Online (Sandbox Code Playgroud)

mswin.vim包含一系列设置和映射,旨在使Vim或多或少像典型的Windows编辑器一样工作,比如<C-v>粘贴.这个命令"激活"了这种愚蠢的行为.

set diffexpr=MyDiff()
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
Run Code Online (Sandbox Code Playgroud)

这是一个定义Vim在用于区分两个或多个缓冲区时的行为的函数.对我来说,它看起来更像是一个黑客而不是其他任何东西.它似乎是检查你的Windows环境是否能够自己做差异,如果没有,使用内置差异.

如果你打算认真地使用/学习Vim,那么以上都不应该进入你的$HOME\_vimrc.nocompatible如果Vim找到了,那么就不会自动为你设置第一行$HOME\_vimrc.

我并不熟悉Windows,因此差异部分可能很有用,但您可以安全地放弃其余部分.

当你看到set something,做:help 'something(用单引号).