2013-10-15 5 views
7

Я только что загрузил vim7.4 для Windows, и мне будет интересно узнать, что делает файл vimrc по умолчанию, который прилагается к нему. Просто краткое объяснение каждого пункта было бы приятно узнать. Вот оно.Объяснение файла vimrc по умолчанию для версии Windows vim

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 

ответ

15
set nocompatible 

По умолчанию Vim ведет себя, как и его предок VI. Это не проблема для быстрых изменений, но это серьезно отстой, если вы собираетесь использовать его более 10 минут. set nocompatible делает Vim более Vim-подобным, чем Vi-like.

См. :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.

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

Когда вы видите set something, сделайте :help 'something (с одной цитатой).

+0

отличный ответ, спасибо – Hoto

1

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

Смежные вопросы