пятница, 30 октября 2009 г.

Vim, я пришел :)

Рано или поздно начинает не хватать nano.
Хочется подсветки синтаксиса, возможность редактирования нескольких файлов, работа с окнами и прочие мелочи.
Можно конечно использовать Kate или какого нибудь тяжеловеса, такого как Eclipse. Но как быть при работе через ssh?
sshfs? а если нужно будет по корню пробежаться? монтировать весь корень?
git? и везде оставлять копию репозитория?

может кто нашел для себя иное решение - я остановился на vim.
P.S. а ещё я пристрастился к вимператору, не хватает только некоторых возможностей, думаю стоит попробовать себя в виде программера плагинов к лисе.

Вот мой конфиг, который я удачно содрал откуда-то. Естественно, я буду его править время от времени.

syntax on                          
" Выключаем совместимость с Vi для подсветки поиска
set nocompatible                                   
" Включаем распознавание типов файлов              
filetype on                                        
filetype plugin on                                 
" Показывать незавершенные команды в статусбаре    
set showcmd                                        
" Нумерация строк                                  
set number                                         
" Поддержка мыши                                   
set mouse=a                                        
set mousemodel=popup                               
" Скрыть указатель мыши во время набора текста     
set mousehide                                      
" Ширина строки команд в одну строку               
set ch=1                                           
" Подсветка синтаксиса                             
syntax enable                                      
hi comment ctermfg=cyan                            
set autoindent                                     
" Цветовая схема                                   
colorscheme wombat                                 
" Не создавать резервных копий файлов              
set nobackup                                       
set noswapfile                                     
" автоматический фолдинг                           
set foldmethod=indent                              
" Поиск по набору текста                           
set incsearch                                      
" Отключение подсветки найденных вариантов         
set hlsearch                                       
" Не выгружать буфер когда переключаешься на другой
set hidden                                         
" Скрыть панель в gui версии                       
set guioptions-=T                                  
" Включить автоотступы                             
set autoindent                                     
" Преобразовать Таба в пробелы                     
set expandtab                                      
" Размер табуляции по умолчанию                    
set shiftwidth=4                                   
set softtabstop=4                                  
set tabstop=4                                      
" Установка тaбов для Python                       
set smarttab                                       
" Формат строки состояния                          
set statusline=%<%f%h%m%r\ %b\ %{&encoding}\ 0x\ \ %l,%c%V\ %P
set laststatus=2                                              
"Умные" отступы (например, автоотступ после {)                
set smartindent                                               
" Опции сессии                                                
set sessionoptions=curdir,buffers,tabpages                    

" Просмотр нетекстовых файлов в Vim -->
au BufReadPost *.pdf silent %!pdftotext -nopgbrk "%" - |fmt -csw78
au BufReadPost *.doc silent %!antiword "%"                        
au BufReadPost *.odt silent %!odt2txt "%"                         
" Просмотр нетекстовых файлов в Vim <--                           

"--------------------------
" ГОРЯЧИЕ КЛАВИШИ          
"--------------------------

" Пробел в нормальном режиме перелистывает страницы
nmap                              

" CTRL-F для omni completion
imap         

" F2 - быстрое сохранение
nmap  :w         
vmap  :w    
imap  :w    

" F3 - просмотр ошибок
nmap  :open   
vmap  :copen
imap  :copen

" F4 - ctags
nmap  :TlistToggle
vmap  :TlistToggle
imap  :TlistToggle

" F5 - просмотр списка буферов
nmap  :BufExplorer
vmap  :BufExplorer
imap  :BufExplorer

" F6-предыдущий буфер
map  :bp     
vmap  :bpi
imap  :bpi

" F7 - следующий буфер
map  :bn      
vmap  :bni
imap  :bni

" F9 - "make" команда
map  :make   
vmap  :makei
imap  :makei

" F10 - удалить буфер
map  :bd    
vmap  :bd
imap  :bd

" F11 - обозреватель файлов
map  :WMToggle    
vmap  :WMTogglei
imap  :WMTogglei

" < & > - делаем отступы для блоков
vmap <  >gv                         

" Выключаем ненавистный режим замены
imap >Ins> i                   

" Редко когда надо [ без пары =)
imap [ []                 
" Аналогично и для {            
imap { {}O         

" С-q - выход из Vim
map  :qa

" Ускоренное передвижение по тексту
nmap  5h                      
nmap  5j
nmap  5k
nmap  5l

" Более привычные Page Up/Down, когда курсор остаётся в той же строке,
" а не переносится вверх/вниз экрана, как при стандартном
"     PgUp/PgDown.
" Поскольку по умолчанию прокрутка по C-U/D происходит на
"         полэкрана,
" привязка делается к двойному нажатию этих комбинаций.
nmap  
imap  
nmap  
imap  

au BufNewFile,BufRead *.tt setf tt2html
:let b:tt2_syn_tags = '\[% %]'

autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType tt2html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType c set omnifunc=ccomplete#Complete
autocmd FileType cpp set omnifunc=cppcomplete#Complete

" Показываем все полезные опции автокомплита сразу
set complete=""
set complete+=.
set complete+=k
set complete+=b
set complete+=t

" Перед сохранением вырезаем пробелы на концах (только в .py файлах)
autocmd BufWritePre *.py normal m`:%s/\s\+$//e ``
" В .py файлах включаем умные отступы после ключевых слов
autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class

" Колоночка, чтобы показывать плюсики для скрытия блоков кода:
set foldcolumn=1


1 комментарий: