Настраиваем Vim для работы с Python кодом

от автора

Сейчас достаточно много постов и видео на тему как сделать из Vim Python IDE. Написать эту статью я решил потому, что уже долгое время пользуюсь этим редактором и надеюсь что мой опыт по его настройки, о котором я напишу в этой статье не помешает. Я не собираюсь делать из Vim «комбайн», напичкав его огромным количеством плагинов, а постараюсь обойтись средствами самого редактора и несколькими расширениями, которые помогут Python разработчикам чувствовать себя более комфортно. Давайте приступим.

LiveReload

Большинство web — разработчиков в наше время с трудом представляют свою жизнь без этого замечательного расширения. Оно есть в таких редакторах как WebStorm, Sublime Text и существует как отдельное приложение для редакторов не поддерживающих LiveReload. К сожалению Vim относится к таким редакторам. Расширение есть, но оно давно уже устарело и не поддерживает последний протокол LiveReload 2.

К счастью есть замечательная консольная утилита, которая называется python-livereload. Из огромных плюсов данной утилиты — не нужно устанавливать плагин для Google Chrome, Firefox и т.д., утилита бесплатная. Получить исходники можно тут github.com/lepture/python-livereload установить ее можно через pip или easy_install:

pip install livereload 

Прежде чем начать редактирование нам необходимо создать Guardfile, который является обычным Python скриптом.

#!/usr/bin/env python from livereload.task import Task   Task.add('css/*.css') Task.add('*.html') 

После чего в текущей директории мы можем запустить сервер LiveReload командой:

livereload -p 8000 

Python-livereload так же поддерживает less, coffee, uglifyjs и slimmer. Достаточно импортировать соответствующую функцию из модуля livereload.compiler, например:

#!/usr/bin/env python from livereload.task import Task from livereload.compiler import lessc, coffee   Task.add('css/*.css') Task.add('*.html') Task.add('css/style.less', lessc('style.less', 'style.css') Task.add('js/main.coffee', coffee('main.coffee', 'main.js') 
Базовые настройки редактора vim

Теперь поговорим о базовых настройках, которые помогут нам в дальнейшем комфортно работать с кодом. Для начала давайте установим клавишу leader.

set mapleader = ","

Клавиша leader позволяет нам создавать собственные комбинации, при этом не портя стандартные, которые уже присутствуют в редакторе. В качестве клавиши leader я установил комбинацию "," вы можете установить любую другую.

Из редактора я постарался убрать все лишнее (кроме вкладок в GUI). Для этого воспользуемся следующими настройками

if has('gui_running') " Глобальные настройки на GUI Vim     set guioptions-=m " убираем меню     " set guioptions-=e " убираем вкладки GUI делаем их как в консоли     set guioptions-=T " убираем тулбар     set guioptions-=r " убираем полосы прокрутки справа     set guioptions-=L " убираем полосы прокрутки слева     set background=light " Цвет фона темный или светлый     set guioptions-=R     set guioptions-=l endif 

Обратите внимание на закоментированную строку set guioptions-=e. Если ее включить вкладки у вас будут выглядеть как в консольном виме:

Отступы между черточками, разделяющие окно редактора можно убрать так

set fillchars=stl:\ ,stlnc:\ ,vert:│ 

Теперь настроим не отображаемые символы, к ним относятся пробельные символы, символы переноса строки и символы табуляции. Я использую следующие настройки

if has('multi_byte')     if version >= 700         " set listchars=tab:»\ ,trail:·,eol:¶,extends:→,precedes:←,nbsp:×         set listchars=tab:▸\ ,eol:¬ # TextMate     else         set listchars=tab:»\ ,trail:·,eol:¶,extends:>,precedes:<,nbsp:_     endif endif nmap <leader>l :set list!<CR> 

Я привязал комбинацию leader + l для включения и выключения не отображаемых символов, так как они не всегда нужны, а иногда даже мешают редактированию.

Совет: иногда при вставке текста в редактор не сохраняется форматирование и в редакторе появляется какая то белиберда. Что бы этого избежать добавьте в vimrc строку set paste или перед вставкой текста введите команду :set paste

Vundle

Vundle позволяет с легкостью устанавливать и обновлять расширения. Далее в статье для установки расширений мы будем использовать именно этот плагин. Установка на займет много времени, поэтому давайте сразу его установим:

git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle 

Теперь необходимо добавить следующие строки в .vimrc:

set nocompatible filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc()  " тут будем добавлять наши расширения  filetype plugin indent on  " тут пойдут наши собственные настройки vim 

Для установки расширений воспользуйтесь следующим форматом

Bundle 'tpope/vim-fugitive' " установка из Github Bundle 'FuzzyFinder' " установка из репозиториев vim-scripts Bundle 'git://git.wincent.com/command-t.git' " установка из Git 
Powerline

Статусная строка в vim выглядит уныло и некрасиво. К счастью есть плагин, который делает ее более информативной и красивой. Пример того, как выглядит строка состояния у меня

Установка: Bundle ‘Lokaltog/vim-powerline’

Что бы отображалась ветка текущего репозитория git, в директории которого вы находитесь добавьте и установите Bundle ‘vim-fugutive’. Для корректной работы Powerline необходимо скачать исправленные шрифты отсюда, установить их и прописать в редакторе. Например:

set guifont=Menlo\ Regular\ for\ Powerline:h12 
Command-T

Command-T это отличное расширение позволяющее вам быстро открывать файлы по их названию, переключаться между буферами или тегами.

Установка: Bundle ‘wincent/Command-T’
Далее необходимо перейти в директорию расширения command-t и запустить rake make:

cd .vim/bundle/command-t rake make 

Клавиатурные комбинации можно настроить следующим образом:

map <leader>f :CommandT<CR> map <leader>b :CommandTBuffer<CR> 

Теперь по leader + f открывается Command-T, leader + b открывает список открытых буферов.

Pyhton mode

Python mode позволяет сделать из редактора почти что полноценную IDE. Из того, что умеет python-mode:

1. Подсветка ошибок через pyflakes, pep8, pylint, mccable, pep257

2. Полная поддержка Rope (RopeCompletion, RopeGotoDefinition, RopeRename, RopeAutoImport, и т.д.)

3. Поддержка virtualenv

Пример настроек python-mode

" Включаем библиотеку Rope let g:pymode_rope = 1  " Включаем linting let g:pymode_lint = 1  " Какие ошибки подсвечивать let g:pymode_lint_checker = "pyflakes,pep8"  " Отключаем надоедливое окно, отображающее ошибки и предупреждения let g:pymode_lint_cwindow = 0  " Включаем поддержку virtualenv let g:pymode_virtualenv = 1  " Подсветка синтаксиса и ошибок let g:pymode_syntax = 1 let g:pymode_syntax_all = 1 let g:pymode_syntax_indent_errors = g:pymode_syntax_all let g:pymode_syntax_space_errors = g:pymode_syntax_all  " Отключаем фолдинг let g:pymode_folding = 0  " Загружаем плагин для вставки брейкпоинтов let g:pymode_breakpoint = 1  " По leader + e будет устанавливаться брейкпоинт let g:pymode_breakpoint_key = '<leader>e' 

Клавиатурные комбинации:

Комбинация Описание
C-c-g Go to definition
C-space Rope autocomplete
C-c-d Rope show documentation
C-c-f Rope find occurrences

Для Rope autocomplete я настроил комбинацию leader+c. Включается она так

imap <leader>c <C-R>=RopeCodeAssistInsertMode()<CR> 

Мой файл конфигурации Vim с подробными комментариями можете посмотреть тут github.com/aliev/vim

Другие полезные расширения vim

MatchTag
Bundle ‘gregsexton/MatchTag’
Подстветка парных html, xml тегов

EndWise
Bundle ‘tpope/vim-endwise’
Отличное расширение для рубистов, которое позволяет автоматически закрывать блоки в Ruby

Emmet
Bundle ‘mattn/emmet-vim’
Я очень долго ждал это расширение. Поддержка emmet (переименованный Zen Coding)

T-Comment
Bundle ‘tomtom/tcomment_vim’
Комментирование блоков кода с автоматическим определением языка

ссылка на оригинал статьи http://habrahabr.ru/post/196550/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *