Объяснение файла 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
.