суббота, 19 января 2008 г.

Мой Vim

Не так давно решил прислушаться к мнeнию и опыту многих разработчиков, использующих в своей работе, а так же повседневной жизни текстовый редактор Vim. В этом посте хотел бы рассказать, что я сделал со своим редактором, для поднятия удобства и комфортности до уровня полноценного( ? ) IDE. Итак, что на данный момент умеет мой редактор:
  • Подсветка синтаксиса
  • Удобная цветовая схема
  • Сворачивание кода
  • Авто-дополнение кода
  • Организация файлов в проекты
  • Отображение структуры кода
  • Проверка python-кода средствами pylint и pychecker
Многое из перечисленного входит в стандартную поставку, нужно только правильно его завести. Об этом, и том, что доставлял сам — в продолжении
Точка старта — свежий, установленный на gentoo linux vim.

Подсветка синтаксиса

Подсветка синтаксиса установлена из коробки. Если всё-же не видно — включается командой set syntax=python (для питона)

Цветовая схема

Разбираясь с разными вариантами цветового оформления обнаружил, что многие из них предназначены исключительно для графической версии — gvim, и не могут полноценно использоваться из консоли. Потому пришлось поковырять. В результате остановился на таком решении:
set t_Co=256
colorscheme 256_adaryn
hi Normal  ctermbg=17

set cursorline
" 22 for nice green line
hi CursorLine ctermbg=235 cterm=none
Тут, как исходная, используется схема 256_adaryn с небольшими доработками.
Что имеем:


Сворачивание кода

Для сворачивания кода использовал плагин python_fold. Достаточно сохранить python_fold.vim в ~/.vim/ftplugin/ и мы имеем то, что хотели. Краткий cheat sheet из статьи о сворачивании + vim man:
  • zj moves the cursor to the next fold.
  • zk moves the cursor to the previous fold.
  • zo opens a fold at the cursor.
  • zO open all folds under the cursor recursively.
  • zm fold more
  • zM closes all open folds.
  • zc close one fold under the cursor.
  • zC close all folds under the cursor recursively.
  • zr reduce folding:
  • zR decreases the foldlevel to zero — all folds will be open.
  • za when on a closed fold: open it. When on an open fold: close it.
  • zA when on a closed fold: open it recursively. When on an open fold: close it recursively
  • [z move to start of open fold.
  • ]z move to end of open fold.
Что имеем:


Авто-дополнение кода

Работает из коробки. Что я изменил для себя:
  • Изменил ужасающих розовый цвет дефолтного окошка :). для этого: hi Pmenu ctermbg=239
  • Приделал скрипт с http://allaboutvim.blogspot.com/ который запускает авто-дополнение по табу.
    " Tab autocompletion
    function! InsertTabWrapper()
    let col = col('.') — 1
    if !col || getline('.')[col — 1] !~ '\k'
    return "\<tab>"
    
    else
    return "\<c-n>"
    endif
    endfunction
    
    imap <tab> <c-r>=InsertTabWrapper()<cr>
    
    set complete=""
    set complete+=.
    set complete+=k
    set complete+=b
    set complete+=t
    set completeopt-=preview
    set completeopt+=longest
    
Что имеем:



Организация файлов в проекты

С помощью плагина project.tar.gz. Отличный материал на эту темe опять же на блоге Всё о Vim
Что имеем:



Отображение структуры кода

Плагин taglist.vim. Особо нечего сказать.
Что имеем:



Проверка python-кода средствами pylint и pychecker

Для этого достаточно установить соотв утилиты и подключить скрипт с http://vim.wikia.com/
Что имеем:



Итого: это лишь первое приближение к данному замечательному редактору, но уже видно, что множество необходимого функционала уже реализовано в нём до нас, а если, случайно, нет — можно смело брать в руки напильник и приделывать соответствующие нашим желаниям куски :)
to be, разумеется, continued

Комментариев нет:

Отправить комментарий