Re: Настройка Vim и работа в нём.
----- User "Артём Н." on 2012-10-16 20:08:47 wrote:
>Поделитесь вашими vimrc и полезными советами по настройке и работе в Vim.
>Интересно всё.
>Хочется конфиг, который будет работать и на windows и на unix-подобных.
Ниже моё что есть. Сразу скажу что под Windows понятия не имею как он
работает или нет и имеются следующие плагины установленные (без них ни
ногой):
* surround
* mark
* fugitive
* easymotion
и ряд других но или их нет в конфиге этом или вырезал за неинтересностью
(настройки vimwiki, vimchat, pyflakes, pep8, snipmate
----- >8 -----
set t_Co=8 " пусть не больше 8 цветов (для 256-цветного tmux-а)
" Базовые настройки включающие всякий функционал
syntax on
filetype on
filetype plugin on
set nocompatible
set cryptmethod=blowfish
set encoding=utf-8
" Настройки по работе с поведением текста, в основном кодом программ
set autoindent
set tabstop=4
set shiftwidth=4
set smarttab
set expandtab
set nojoinspaces
set backspace=indent,eol
set viminfo='100,<50,s10,h,%
" Относительная нумерация строк и показ чего же я ввожу
set relativenumber
set showcmd
set showmatch
set cursorline
set colorcolumn=80
" Поиск игнорируя регистр и полезности касательно него
set ignorecase
set smartcase
set hlsearch
set incsearch
" Настройки строки состояния
hi User1 ctermbg=blue ctermfg=green
hi User2 ctermbg=green ctermfg=black
hi User3 ctermbg=yellow ctermfg=blue
set laststatus=2
set statusline=%n\|%F%m%r%h%w%q\ %=
set statusline+=%1*%Y[%{strlen(&fenc)?&fenc:&enc},%{&ff}]
set statusline+=%2*[%l/%L]
set statusline+=[%c%V:0x%B]
set statusline+=%3*%{fugitive#statusline()}
set statusline+=%*\ %P
" Используется для быстрого переключения между режимами для того чтобы
" вставлять выделяемый текст: красного столбца, fold-ов
function CCinv()
if exists('&foldcolumn') && &foldcolumn == 1
set colorcolumn=
set foldcolumn=0
set foldlevel=999
else
set colorcolumn=80
set foldcolumn=1
set foldlevel=0
endif
endfunction
" Просто функция очистки регистров
function ClearRegisters()
for chr in split("abcdefghijklmnopqrstuvwxyz", '\zs')
execute "let @" . chr . "=''"
endfor
endfunction
" Сохранять ли текущий view или нет после выхода из буфера
function s:ViewSaving()
let s:ignored = ["passmandb", "fugitive:", "secure=+", "=+tmp=+"]
let s:need_view = 1
for ignore in s:ignored
if match(expand("%"), ignore) != -1
let s:need_view = 0
endif
endfor
if s:need_view
mkview
endif
endfunction
autocmd BufWinLeave *.* call s:ViewSaving()
autocmd BufWinEnter *.* silent loadview
" Настройки fold-ов
set foldmethod=indent
set foldenable
set foldcolumn=1
set foldnestmax=3
set pastetoggle=<F2> " режим вставки отформатированного текста
:map <F3> :set relativenumber!<CR>:call CCinv()<CR>zR " помощь для выделения
:map <F4> :nohlsearch<CR>:MarkClear<CR> " очистка подсветок поиска и mark-ов
:map <F6> :Explore<CR> " вызов файлового менеджера
:map <F7> "cyiw:execute "Gvsplit " . @c<CR>zR " открытие коммита под курсором
:map <F8> :close<CR> " закрыть буфер
:map <F9> :registers<CR> " показать регистры
:map <F10> ysiw" " обрамить текущее слово в кавычки
:map <F11> :cprevious<CR> " предыдущий элемент QuickFix-а
:map <F12> :cnext<CR> " следующий элемент QuickFix-а
:cmap w72 set textwidth=72 " ширина строки для форматирования 72
:cmap SP setlocal spell spelllang=ru,en " проверка орфографии
:cmap CE :set expandtab<CR>:center<CR>:set noexpandtab<CR> " центрирование
:nmap F f<space> " переход на ближайший пробел
:digraphs .3 8230 " троеточие
:digraphs \"6 8222 " грустный смайл
:digraphs ou 9785 " весёлый смайл
:digraphs \|\| 8741 " конкатенация
:map ,cs 1G/^Subject: <CR>yypIX-Old-<ESC>-W " замена темы письма
" При yank-е производить сдвиг нумерованных регистров, также заполняя @1
function s:yankstack()
if @" != @1 && @" != "TODO"
for rn in range(9, 2, -1)
execute "let @" . rn . "=@" . (rn - 1)
endfor
let @1=@"
endif
return "y"
endfunction
exec 'nnoremap <expr>' 'y' '<SID>yankstack()'
exec 'xnoremap <expr>' 'y' '<SID>yankstack()'
" Покороче вызов easymotion-а
let g:EasyMotion_mapping_b = '<leader>b'
let g:EasyMotion_mapping_w = '<leader>w'
--
Happy hacking, Sergey Matveev .
[CYPHERPUNKS.RU][FSF][FSFE][EFF] fellow ..:
Reply to: