13

我刚刚为 windows 下载了 vim7.4,我想知道它附带的默认 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
4

2 回答 2

23
set nocompatible

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

:help nocompatible

source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim

获取这两个文件。vimrc_example.vim包含示例设置。看看它可能是个好主意:它可能包含对你有用的东西。

behave mswin

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

这是一个定义 Vim 在用于区分两个或多个缓冲区时的行为的函数。对我来说,它看起来更像是一个黑客。它似乎正在检查您的 Windows 环境是否能够自行进行差异,如果不能,请使用内置差异。

如果你打算认真使用/学习 Vim,以上内容都不应该进入你的$HOME\_vimrc. nocompatible如果 Vim 找到一个$HOME\_vimrc.

我对 Windows 不是很熟悉,所以差异部分可能很有用,但您可以放心地放弃其余部分。

当您看到 a 时set something,请执行:help 'something(使用单引号)。

于 2013-10-15T05:56:48.860 回答
1

您可能已经知道这一点,但是如果您删除 vimrc_example.vim 源,您可能想要添加的一件事是syntax on. 没有这个,无论colorscheme.

于 2015-04-27T14:52:12.923 回答