[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Настройка Vim и работа в нём.



18.10.2012 20:38, stargrave@stargrave.org пишет:
> ----- 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'
Спасибо. Кое-что включу в свой.


Reply to: