Не так давно я решил настроить текстовый редактор Vim для написания скриптов на Python. Выкладываю небольшую инструкцию под Debian/Ubuntu.
Устанавливаем Python 3.4 и pip3 (установщик модулей для Python)
apt-get install python3.4 apt-get install pip3 (либо apt-get install python3-pip)
После этого нужно убедиться, что Vim в вашей системе собран с поддержкой Python:
vim --version | grep '+python'
Если вывод будет примерно таким:
+cryptv +linebreak +python +viminfo
то значит поддержка Python имеется, если же нет, то нужно либо пересобрать/переустановить Vim с поддержкой Python, либо поставить пакет Vim-nox - расширенная версия Vim'a для работы в консоли, идет сразу с поддержкой Python'a.
Для Vim существует удобный пакетный менеджер, с помощью которого можно быстро устанавливать, обновлять и удалять плагины. Установим его:
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim/
После выполнение этой команды Vundle будет установлен в ~/.vim/bundle/Vundle.vim
Добавим в конфиг .vimrc следующие строки:
set nocompatible " be iMproved, required filetype off " required "===================================================== " Vundle settings "===================================================== " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim/ call vundle#begin() Plugin 'gmarik/Vundle.vim' " let Vundle manage Vundle, required "---------=== Навигация по коду/проекту ===------------- Plugin 'scrooloose/nerdtree' " Project and file navigation Plugin 'majutsushi/tagbar' " Class/module browser "------------------=== Прочее ===---------------------- Plugin 'bling/vim-airline' " Lean & mean status/tabline for vim Plugin 'fisadev/FixedTaskList.vim' " Pending tasks list Plugin 'rosenfeld/conque-term' " Consoles as buffers Plugin 'tpope/vim-surround' " Parentheses, brackets, quotes, XML tags, and more "--------------=== Поддержка сниппетов ===--------------- Plugin 'garbas/vim-snipmate' " Snippets manager Plugin 'MarcWeber/vim-addon-mw-utils' " dependencies #1 Plugin 'tomtom/tlib_vim' " dependencies #2 Plugin 'honza/vim-snippets' " snippets repo "---------------=== Поддержка языка ===------------- " --- Python --- Plugin 'klen/python-mode' " Python mode (docs, refactor, lints, highlighting, run and ipdb and more) Plugin 'davidhalter/jedi-vim' " Jedi-vim autocomplete plugin Plugin 'mitsuhiko/vim-jinja' " Jinja support for vim Plugin 'mitsuhiko/vim-python-combined' " Combined Python 2/3 for Vim call vundle#end() " required filetype on filetype plugin on filetype plugin indent on
Строки вида Plugin 'scrooloose/nerdtree' представляют собой ссылки на эти плагины в интернете, которые впоследствии Vundle скачает и установит.
Сами плагины:
Чтобы вышеперечисленные плагины установить, запускаем Vim и выполняем:
:PluginInstall
Этой командой мы сканируем кофигурационный файл .vimrc на наличие списка плагинов указанных в виде Plugin 'ссылка_до_плагина'. После этого начнется скачивание и установка плагинов с github. Установленные плагины помечаются значком "+".
Еще пара полезных команд Vundle:
Приведу еще несколько общих настроек (добавьте эти строки в конец конфига .vimrc):
"===================================================== " General settings "===================================================== set backspace=indent,eol,start aunmenu Help. aunmenu Window. let no_buffers_menu=1 set mousemodel=popup set ruler set completeopt-=preview set gcr=a:blinkon0 if has("gui_running") set cursorline endif set ttyfast " включить подсветку кода syntax on if has("gui_running") " GUI? устаналиваем тему и размер окна set lines=50 columns=125 colorscheme elflord " раскомментируйте эти строки, если хотите, чтобы NERDTree/TagBar автоматически отображались при запуске vim " autocmd vimenter * TagbarToggle " autocmd vimenter * NERDTree " autocmd vimenter * if !argc() | NERDTree | endif " на маке vim? if has("mac") set guifont=Consolas:h13 set fuoptions=maxvert,maxhorz else " дефолтный GUI set guifont=Ubuntu\ Mono\ derivative\ Powerline\ 10 endif else " терминал? colorscheme myterm endif tab sball set switchbuf=useopen " отключаем пищалку и мигание set visualbell t_vb= set novisualbell set enc=utf-8 " utf-8 по дефолту в файлах set ls=2 " всегда показываем статусбар set incsearch " инкреминтируемый поиск set hlsearch " подсветка результатов поиска set nu " показывать номера строк set scrolloff=5 " 5 строк при скролле за раз " отключаем бэкапы и своп-файлы set nobackup " no backup files set nowritebackup " only in case you don't want a backup file while editing set noswapfile " no swap files " прячем панельки "set guioptions-=m " меню set guioptions-=T " тулбар "set guioptions-=r " скроллбары " настройка на Tab set smarttab set tabstop=8 " при переходе за границу в 80 символов в Ruby/Python/js/C/C++ подсвечиваем на темном фоне текст augroup vimrc_autocmds autocmd! autocmd FileType ruby,python,javascript,c,cpp highlight Excess ctermbg=DarkGrey guibg=Black autocmd FileType ruby,python,javascript,c,cpp match Excess /\%80v.*/ autocmd FileType ruby,python,javascript,c,cpp set nowrap augroup END " указываем каталог с настройками SnipMate let g:snippets_dir = "~/.vim/vim-snippets/snippets" " настройки Vim-Airline set laststatus=2 let g:airline_theme='badwolf' let g:airline_powerline_fonts = 1 let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#formatter = 'unique_tail' " TagBar настройки map <F4> :TagbarToggle<CR> let g:tagbar_autofocus = 0 " автофокус на Tagbar при открытии " NerdTree настройки " показать NERDTree на F3 map <F3> :NERDTreeToggle<CR> "игноррируемые файлы с расширениями let NERDTreeIgnore=['\~$', '\.pyc$', '\.pyo$', '\.class$', 'pip-log\.txt$', '\.o$'] " TaskList настройки map <F2> :TaskList<CR> " отобразить список тасков на F2 " Работа буфферами map <C-q> :bd<CR> " CTRL+Q - закрыть текущий буффер
Ссылка на полный файл конфига на BitBucket.
Я также прикрепил его как вложение к статье.
Далее нужно поставить pyvenv, для создания виртуального окружения:
pip3 install pyvenv-3.4
Создаем каталог виртуального окружения в каталоге, где будут лежать .py -файлы (перед созданием каталог должен быть пустым):
pyvevn-3.4 /home/user/python
после этого в данном каталоге создастся виртуальное окружение, появится бинарник Python3.4, pip3 и т.д. Чтобы активировать (запустить окружение), выполняем команду:
source /home/user/python/activate
И, наконец, ставим ipython, для удобного запуска интерпретатора прямо в окне Vim (плагин Python-mode)
pip3 install ipython
Несколько горячих клавиш, при работе с python-скриптами в нашем Vim:
После всех наших настроек мы получим примерно такой Vim:
Файл конфига .vimrc я хорошо документировал, все настройки с комментариями вы найдете в полном файле во вложении к статье или на BitBucket.
Статья получилась достаточно объемной, по мере каких-либо изменений/нововведений буду обновлять материал.
Жду ваших дополнений/замечаний в комментарии!
Комментарии
Спасибо за статью, скачал
Спасибо за статью, скачал .vimrc.
Вопрос: есть возможность отключить, либо изменить толщину, цвет и положение красной вертикальной ограничительной линии?
Да, за вывод красной
Да, за вывод красной вертикальной полосы, её расположение и цвет отвечает этот блок в конфиге:
Подскажите пожалуйста
Подскажите пожалуйста поподробнее, как же убрать эту линию? Час мучаюсь - ничего не получается(
Просто уберите из конфига
Просто уберите из конфига следующий блок настроек (строки с 116 по 121):
let g:pymode_options
let g:pymode_options_colorcolumn = 0
let g:pymode_options_max_line
let g:pymode_options_max_line_length = 200
Полезная статья. Спасибо.
Полезная статья. Спасибо.
У меня проблема с темами -
У меня проблема с темами - когда создаю файл - E185: cannot find color scheme 'myterm'
А когда открываю Vim, внизу надпись - Could not resolve airline theme "badwolf". Themes have been migrated to github.com/vim-airline/vim-airline-themes.
исправьте git clone github
исправьте git clone github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim/
на git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
:)