Click

Файл налаштування vim -. Vimrc (для Linux та Windows)

Продовжу збереження найцікавіших своїх конфігураційних файлів. Сьогодні прийшла черга файлу конфігурації для редактора vim -. Vimrc. Досить багато часу йому приділив, збираючи налаштування і розділяючи їх застосування для різних ОС (Windows і Linux). А чи буде він завершено остаточно - навіть і не знаю :)

Найкраще російськомовне керівництво (з прикладами) з налаштування Vim з зустрілися мені в інтернеті: Черговий HowTo по Vim .

"Налаштування зовнішнього вигляду І БАЗОВІ НАЛАШТУВАННЯ РЕДАКТОРА
" отключить режим совместимости с классическим Vi set nocompatible "відключити режим сумісності з класичним Vi
" включить подсветку синтаксиа syntax on "включити підсвічування синтакси
" определять подсветку на основе кода файла filetype plugin indent on "визначати підсвічування на основі коду файлу
= 3 " сколько строк внизу и вверху экрана показывать при скроллинге set scrolloff = 3 "скільки рядків внизу і вгорі екрану показувати при скролінгу
=dark " установить цвет фона set background = dark "встановити колір фону
colorscheme af "колірна схемо за замовчуванням (при введенні в режимі команд по табуляції доступно автодоповнення імен схем)
" перенос длинных строк set wrap "перенесення довгих рядків
" переносить целые слова set lbr "переносити цілі слова
" не выгружать буфер когда переключаешься на другой set hidden "не вивантажувати буфер коли перемикаєшся на інший
=a " включает поддержку мыши при работе в терминале (без GUI) set mouse = a "включає підтримку миші при роботі в терміналі (без GUI)
" скрывать мышь в режиме ввода текста set mousehide "приховувати миша під час введення тексту
" показывать незавершенные команды в статусбаре (автодополнение ввода) set showcmd "показувати незавершені команди в статусбаре (автодоповнення вводу)
+ = <:> " показывать совпадающие скобки для HTML-тегов set matchpairs + = <:> "показувати збігаються дужки для HTML-тегів
" показывать первую парную скобку после ввода второй set showmatch "показувати першим хлопцем дужку після введення другої
" перечитывать изменённые файлы автоматически set autoread "перечитувати змінені файли автоматично
" использовать больше цветов в терминале set t_Co = 256 "використовувати більше кольорів в терміналі
set confirm "використовувати діалоги замість повідомлень про помилки
"" Автоматично перечитувати конфігурацію VIM після збереження
bufwritepost $ MYVIMRC source $ MYVIMRC autocmd! bufwritepost $ MYVIMRC source $ MYVIMRC
"" Формат рядка стану

= 2 " всегда показывать строку состояния set laststatus = 2 "завжди показувати рядок стану
"" Підсвічувати таби і прогалини в кінці рядка
" включить подсветку set list "включити підсвічування
=tab :>- ,trail :- " установить символы, которыми будет осуществляться подсветка set listchars = tab:> -, trail: - "встановити символи, якими буде здійснюватися підсвічування
"" Стрибати на останню позицію при відкритті буфера
bufreadpost * call LastPosition ( ) autocmd! bufreadpost * call LastPosition ()
LastPosition ( ) function! LastPosition ()
( "' \" " ) && line ( "' \" " ) < = line ( '$' ) if line ("'\" ") & & line ("' \ "") <= line ('$')
normal! `"
endif
endfunction
= indent , eol ,start " backspace обрабатывает отступы, концы строк set backspace = indent, eol, start "backspace обробляє відступи, кінці рядків
=curdir,buffers,tabpages " опции сессий - перейти в текущию директорию, использовать буферы и табы set sessionoptions = curdir, buffers, tabpages "опції сесій - перейти в поточну директорію, використовувати буфери і таби
" не использовать своп-файл (в него скидываются открытые буферы) set noswapfile "не використовувати своп-файл (в нього скидаються відкриті буфери)
=current set browsedir = current
" вместо писка бипером показывать это на экране set visualbell "замість писку біпером показувати це на екрані
"При вставці фрагмента зберігає відступи
= set pastetoggle =

"НАСТРОЙКИ ПОШУКУ
" ics - поиск без учёта регистра символов set ignorecase "ics - пошук без урахування регістру символів
" - если искомое выражения содержит символы в верхнем регистре - ищет с учётом регистра, иначе - без учёта set smartcase "- якщо шукане вираження містить символи у верхньому регістрі - шукає з урахуванням регістра, інакше - без урахування
" подсветка результатов поиска set hls "підсвічування результатів пошуку
" поиск фрагмента по мере его набора set incsearch "пошук фрагмента в міру його набору

"НАСТРОЙКИ згортання блоків КОДА (фолдінг)
" включить фолдинг set foldenable "включити фолдінг
= syntax " определять блоки на основе синтаксиса файла set foldmethod = syntax "визначати блоки на основі синтаксису файлу
= 3 " показать полосу для управления сворачиванием set foldcolumn = 3 "показати смугу для управління згортанням
= 1 " Первый уровень вложенности открыт, остальные закрыты set foldlevel = 1 "Перший рівень вкладеності відкритий, інші закриті
" правильное сворачивание классов и функций Perl let perl_folding = 1 "правильне згортання класів і функцій Perl
" правильное сворачивание классов и функций PHP let php_folding = 1 "правильне згортання класів і функцій PHP
=all " автоматическое открытие сверток при заходе в них set foldopen = all "автоматичне відкриття згорток при заході в них

"НАСТРОЙКИ Відступ
= 4 " размер отступов set shiftwidth = 4 "розмір відступів
= 3 " ширина табуляции set tabstop = 3 "ширина табуляції
= 3 " ширина 'мягкого' таба set softtabstop = 3 "ширина 'м'якого' таба
" ai - включить автоотступы set autoindent "ai - включити автоотступи
" ci - отступы в стиле С set cindent "ci - відступи в стилі С
" Преобразовать табуляцию в пробелы set expandtab "Перетворити табуляцію в прогалини
" Умные отступы (например, автоотступ после {) set smartindent "Розумні відступи (наприклад, автоотступ після {)
"Для зазначених типів файлів відключає заміну табів пробілами і змінює ширину відступу
crontab,fstab,make set noexpandtab tabstop = 8 shiftwidth = 8 au FileType crontab, fstab, make set noexpandtab tabstop = 8 shiftwidth = 8

"НАСТРОЙКИ РОБОТИ З ФАЙЛАМИ
"Кодування редактора за замовчуванням (при відкриванні всі файли приводяться до цієї кодуванні)
( 'win32' ) if has ('win32')
=cp1251 set encoding = cp1251
else
=utf - 8 set encoding = utf - 8
=utf - 8 set termencoding = utf - 8
endif
=unix,dos,mac " формат файла по умолчанию (влияет на окончания строк) - будет перебираться в указанном порядке set ffs = unix, dos, mac "формат файлу за замовчуванням (впливає на закінчення рядків) - буде перебиратися в зазначеному порядку
=utf - 8 ,cp1251,koi8 - r,cp866 " варианты кодировки файла по умолчанию (все файлы по умолчанию сохраняются в этой кодировке) set fencs = utf - 8, cp1251, koi8 - r, cp866 "варіанти кодування файлу за замовчуванням (всі файли за замовчуванням зберігаються в цьому кодуванні)
"" Застосовувати типи файлів
filetype on
filetype plugin on
filetype indent on
сделать его исполняемым "" Якщо зберігається файл є файлом скрипта - зробити його виконуваним
BufWritePost * if getline ( 1 ) = ~ "^#!.*/bin/" | silent ! chmod a + x %| endif "" Au BufWritePost * if getline (1) = ~ "^#!.*/ bin / "| silent! Chmod a + x% | endif
"" При відкритті файлу задавати для нього відповідний 'компілятор'
BufEnter *. pl compiler perl autocmd! BufEnter *. pl compiler perl

"НАСТРОЙКИ ЗМІННИХ ОТОЧЕННЯ
( 'win32' ) if has ('win32')
VIMRUNTIME = $ HOME . ' \P rograms \V im \v im72' let $ VIMRUNTIME = $ HOME. '\ P rograms \ V im \ v im72'
mswin . vim source $ VIMRUNTIME / mswin. vim
else
VIMRUNTIME = $ HOME . '/.vim' let $ VIMRUNTIME = $ HOME. '/. vim'
endif

"Налаштування зовнішнього вигляду
для Windows и Linux ) "" Установка шрифту (для Windows і Linux)
( 'gui' ) if has ('gui')
( 'win32' ) if has ('win32')
=Lucida_Console : h10 : cRUSSIAN :: set guifont = Lucida_Console: h10: cRUSSIAN::
else
=Terminus\ 10 set guifont = Terminus \ 10
endif
endif
"" Розгортати вікно редактора на весь екран
( 'gui' ) if has ('gui')
=T " отключить меню в GUI set guioptions - = T "відключити меню в GUI
* : set lines = 99999 columns = 99999 au GUIEnter *: set lines = 99999 columns = 99999
endif

"НАСТРОЙКИ РЕЗЕРВНОГО КОПІЮВАННЯ
" включить сохранение резервных копий set backup "включити збереження резервних копій
bufwritepre * call BackupDir ( ) " сделаем резервную копию перед записью буффера на диск autocmd! bufwritepre * call BackupDir () "зробимо резервну копію перед записом буферу на диск
"" Зберігати розумні резервні копії щоденно
BackupDir ( ) function! BackupDir ()
"Визначимо каталог для збереження резервної копії
( 'win32' ) if has ('win32')
backupdir = $ VIMRUNTIME . ' \b ackup' let l: backupdir = $ VIMRUNTIME. '\ b ackup'
else
backupdir = $ VIMRUNTIME . '/backup/' . let l: backupdir = $ VIMRUNTIME. '/ backup /'.
expand ( '%:p:h' ) , '^' .$ HOME, '~' , '' ) \ Substitute (expand ('%: p: h'), '^'. $ HOME, '~','')
endif
"Якщо каталог не існує, створимо його рекурсивно
isdirectory ( l : backupdir ) if! isdirectory (l: backupdir)
( l : backupdir , 'p' , 0700 ) call mkdir (l: backupdir, 'p', 0700)
endif
"Перевизначити каталог для резервних копій
amp;amp; backupdir =l : backupdir let & amp; amp; backupdir = l: backupdir
"Перевизначити розширення файлу резервної копії
amp;amp; backupext = strftime ( '~%Y-%m-%d~' ) let & amp; amp; backupext = strftime ('~% Y-% m-% d ~')
endfunction

"НАСТРОЙКИ Перемикання розкладок клавіатури
"" Взято у konishchevdmitry
=russian - jcukenwin " настраиваем переключение раскладок клавиатуры по <C-^> set keymap = russian - jcukenwin "налаштовуємо перемикання розкладок клавіатури по <C-^>
= 0 " раскладка по умолчанию - английская set iminsert = 0 "розкладка за замовчуванням - англійська
MyKeyMapHighlight ( ) function! MyKeyMapHighlight ()
amp;amp; iminsert == 0 " при английской раскладке статусная строка текущего окна будет серого цвета if & amp; amp; iminsert == 0 "при англійській розкладці статусний рядок поточного вікна буде сірого кольору
hi StatusLine ctermfg = Gray guifg = Gray
else "а при російській - зеленого.
hi StatusLine ctermfg = DarkGreen guifg = DarkGreen
endif
endfunction
" при старте Vim устанавливать цвет статусной строки call MyKeyMapHighlight () "при старті Vim встановлювати колір статусного рядка
* : call MyKeyMapHighlight ( ) " при смене окна обновлять информацию о раскладках au WinEnter *: call MyKeyMapHighlight () "при зміні вікна оновлювати інформацію про розкладках
C - F > < C -^> " использовать Ctrl+F для переключения раскладок cmap <silent> <C - F> <C - ^> "використовувати Ctrl + F для перемикання розкладок
C - F > < C -^> X < Esc >: call MyKeyMapHighlight ( ) < CR > a < C - H > imap <silent> <C - F> <C - ^> X <Esc>: call MyKeyMapHighlight () <CR> a <C - H>
C - F > a < C -^> <Esc> : call MyKeyMapHighlight ( ) <CR> nmap <silent> <C - F> a <C - ^> <Esc>: call MyKeyMapHighlight () <CR>
C - F > < Esc > a < C -^> <Esc> : call MyKeyMapHighlight ( ) < CR > gv vmap <silent> <C - F> <Esc> a <C - ^> <Esc>: call MyKeyMapHighlight () <CR> gv

"ВКЛЮЧЕННЯ АВТОДОПЛНЕНІЯ ВВЕДЕННЯ (omnifunct)
python set omnifunc =pythoncomplete#Complete autocmd FileType python set omnifunc = pythoncomplete # Complete
tt2html set omnifunc =htmlcomplete#CompleteTags autocmd FileType tt2html set omnifunc = htmlcomplete # CompleteTags
javascript set omnifunc =javascriptcomplete#CompleteJS autocmd FileType javascript set omnifunc = javascriptcomplete # CompleteJS
html set omnifunc =htmlcomplete#CompleteTags autocmd FileType html set omnifunc = htmlcomplete # CompleteTags
css set omnifunc =csscomplete#CompleteCSS autocmd FileType css set omnifunc = csscomplete # CompleteCSS
xml set omnifunc =xmlcomplete#CompleteTags autocmd FileType xml set omnifunc = xmlcomplete # CompleteTags
php set omnifunc =phpcomplete#CompletePHP autocmd FileType php set omnifunc = phpcomplete # CompletePHP
c set omnifunc =ccomplete#Complete autocmd FileType c set omnifunc = ccomplete # Complete

"Налаштування гарячих клавіш
"F2 - зберегти файл
w < cr > nmap <F2>: w <cr>
esc >: w < cr > i vmap <F2> <esc>: w <cr> i
esc >: w < cr > i imap <F2> <esc>: w <cr> i
"F5 - перегляд списку буферів
buffers < cr > nmap <F5> <Esc>: buffers <cr>
esc >: buffers < cr > vmap <F5> <esc>: buffers <cr>
esc >< esc >: buffers < cr > imap <F5> <esc> <esc>: buffers <cr>
"F6 - попередній буфер
: bp < cr > map <F6>: bp <cr>
esc >: bp < cr > i vmap <F6> <esc>: bp <cr> i
esc >: bp < cr > i imap <F6> <esc>: bp <cr> i
"F7 - наступний буфер
: bn < cr > map <F7>: bn <cr>
esc >: bn < cr > i vmap <F7> <esc>: bn <cr> i
esc >: bn < cr > i imap <F7> <esc>: bn <cr> i
"F9 - збереження файлу і запуск компіляції (make)
: w < cr >: make < cr > map <F9>: w <cr>: make <cr>
esc >: w < cr >: make < cr > i vmap <F9> <esc>: w <cr>: make <cr> i
esc >: w < cr >: make < cr > i imap <F9> <esc>: w <cr>: make <cr> i
"F10 - включити-виключити браузер структури документа (TagList)
: TlistToggle < cr > map <F10>: TlistToggle <cr>
esc >: TlistToggle < cr > vmap <F10> <esc>: TlistToggle <cr>
esc >: TlistToggle < cr > imap <F10> <esc>: TlistToggle <cr>
"F11 - включити-вимкнути нумерацію рядків
set < Space > nu !< CR > a imap <F11> <Esc>: set <Space> nu! <CR> a
set < Space > nu ! <CR> nmap <F11>: set <Space> nu! <CR>
"F12 - оглядач файлів (: Ex для стандартного оглядача, плагін NERDTree -
"Дерево каталогів)
: NERDTreeToggle < cr > map <F12>: NERDTreeToggle <cr>
esc >: NERDTreeToggle < cr > i vmap <F12> <esc>: NERDTreeToggle <cr> i
esc >: NERDTreeToggle < cr > i imap <F12> <esc>: NERDTreeToggle <cr> i
вкладок ) "" Переключення табів (вкладок)
S - tab > : tabprevious < cr > map <S - tab>: tabprevious <cr>
tab > : tabprevious < cr > nmap <S - tab>: tabprevious <cr>
tab > < ESC >: tabprevious < cr > i imap <S - tab> <ESC>: tabprevious <cr> i
C - tab > : tabnext < cr > map <C - tab>: tabnext <cr>
tab > : tabnext < cr > nmap <C - tab>: tabnext <cr>
tab > < ESC >: tabnext < cr > i imap <C - tab> <ESC>: tabnext <cr> i
t > : tabnew < cr > nmap <C - t>: tabnew <cr>
t > < ESC >: tabnew < cr > imap <C - t> <ESC>: tabnew <cr>
w > : tabclose < cr > nmap <C - w>: tabclose <cr>
w > < ESC >: tabclose < cr > imap <C - w> <ESC>: tabclose <cr>
"" Переключення кодувань файлу
set wildmenu
= < Tab > set wcm = <Tab>
e ++ enc =cp1251 < CR > menu Encoding. CP1251: e + + enc = cp1251 <CR>
e ++ enc =cp866 < CR > menu Encoding. CP866: e + + enc = cp866 <CR>
U : e ++ enc =koi8 - u < CR > menu Encoding. KOI8 - U: e + + enc = koi8 - u <CR>
8 : e ++ enc =utf - 8 < CR > menu Encoding. UTF - 8: e + + enc = utf - 8 <CR>
: emenu Encoding .< TAB > map <F8>: emenu Encoding. <TAB>
"C (trl) + d - дублювання поточного рядка
d > < esc > yypi imap <C - d> <esc> yypi
"Ctrl-пробіл для автодоповнення
space > < C - x >< C - o > inoremap <C - space> <C - x> <C - o>
"Ce - коментувати / розкоментувати (за допомогою NERD_Comment)
C - e > , ci map <C - e>, ci
e > , ci nmap <C - e>, ci
e > < ESC > ,cii imap <C - e> <ESC>, cii
копировать - вставить через Ctrl "" Вирізати - копіювати - вставити через Ctrl
X > "+x " CTRL - X - вырезать vnoremap <C - X> "+ x" CTRL - X - вирізати
C > "+y " CTRL - C - копировать vnoremap <C - C> "+ y" CTRL - C - копіювати
C - V > "+gP " CTRL - V вставить под курсором map <C - V> "+ gP" CTRL - V вставити під курсором
вернуть через Ctrl "" Скасувати - повернути через Ctrl
C - Z > u " отмена действия noremap <C - Z> u "скасування дії
Z > < C - O > u inoremap <C - Z> <C - O> u
C - Y > < C - R > " вернуть отменённое назад noremap <C - Y> <C - R> "повернути скасоване назад
Y > < C - O >< C - R > inoremap <C - Y> <C - O> <C - R>

Сподіваюся, комусь та стане в нагоді!

Ще на схожі теми:

Category Рубрики: Linux , Гаджети , Кодинг | Tag Мітки: , , , | Comments 2 коментарі

Comments

2 коментарі to "Файл налаштування vim -. Vimrc (для Linux та Windows)"

  1. Dummy пише:

    Замість:
    027. "" Стрибати на останню позицію при відкритті буфера
    028.autocmd! bufreadpost * call LastPosition ()
    029. function! LastPosition ()
    030. if line ("'\" ") & & line ("' \ "")<= line ('$')
    031. normal! `"
    032. endif
    033. endfunction

    куди розумніше робити:
    au BufWinLeave *.* silent mkview
    au BufWinEnter *.* silent loadview

    В останньому випадку і стан фолдінга зберігається.

    • dimio пише:

      Перевірив на gvim 7.2 для windows - не працює, при відкритті файлу курсор завжди знаходиться на першому символі першого рядка. loadview часом не на своп вима зав'язана? Він у мене відключений.
      Спробую ще під лінухой будинку.

Leave a Reply