Объяснение файла vimrc по умолчанию для windows версии vim

Я только что загрузил vim7.4 для 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

2 ответов


set nocompatible

по умолчанию Vim ведет себя как его предок vi. Это не проблема для быстрого редактирования, но это серьезно отстой, если вы собираетесь использовать его более 10 минут. set nocompatible ВИМ ВИМ делает больше, чем ви-как.

посмотреть :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 делать сам diff, а если нет, использовать встроенный diff.

если вы намерены использовать / учиться Vim серьезно, ни один из вышеперечисленных не должен входить в ваш $HOME\_vimrc. Даже не первая строка с nocompatible устанавливается автоматически для вас, если Vim обнаруживает $HOME\_vimrc.

я не очень хорошо знаком с окнами, поэтому часть diff может быть полезна, но вы можете безопасно отбросить остальное.

когда вы видите set something, у :help 'something (с одинарной кавычкой).


возможно, вы поняли это, но одну вещь вы можете добавить, если удалите vimrc_example.ВИМ источник syntax on. Без этого текст будет бесцветным в gvim независимо от colorscheme.