- Saved searches
- Use saved searches to filter your results more quickly
- License
- ryayoung/vim-run-python
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- Настраиваем Vim для работы с Python кодом
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
A vim plugin to run Python code without using a terminal. Places the output of your code in a window right below your script.
License
ryayoung/vim-run-python
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Vim plugin to run Python code inside Vim, without using a terminal. With a single keypress, the output from your current Python file will be placed in a new buffer (window) at the bottom of your editor.
- Intelligent Environment Finding: When you press your key binding, it searches your current directory, and several parent directories, to find a python virtual environment named env. If none are found, then your machine’s global python kernel will be used.
- Current script gets executed silently, and its output is placed into a new Vim buffer at the bottom of your window.
- This new buffer is dynamically sized, so it’s only tall enough to fit the output of your script. Its height is updated every time you execute.
This is designed to work with GVIM on Mac/Unix systems only. However, the code can easily be modified to work with Windows. See below for an explanation:
- Find the source code in your vim files, in your plugin manager’s respective directory. For example, if using Plug, go to plugged/vim-run-python/plugin/run-python.vim .
- Near the middle of the file, find the block of code that starts with:
if filereadable(«env/pyvenv.cfg») == 1 silent exe «.!source env/bin/activate&&python3 » . shellescape(s:current_buffer_file_path, 2) .
- Modify all the file paths in double quotes to match Windows format. All forward-slashes must be replaced with backslashes. Also, the command to activate a Python *venv* is different for windows: Replace all instances of `env/bin/activate` with `env/Scripts/activate`. If using *virtualenv* or another type of environment, see its documentation for help. > By default, this plugin assumes all your python virtual environments are named `/env`. If using a different naming convention, use the Windows instructions above to find the block of code that activates the environment, and replace all instances of `env` as needed. ## INSTALLATION 1. If using Plug as your plugin manager, paste into the plugin section of your ```vimrc```: ```vim Plug 'ryayoung/vim-run-python'
In your vimrc , declare a key mapping to execute :call ExecutePythonNewBuffer() . I like to use r . For example.
« In your vimrc. nnoremap r :call ExecutePythonNewBuffer()
This is a simple plugin. Only about 90 lines in total — half of which are settings. If you’ve come this far, I recommend reading through the source code and making adjustments or customizations as desired. To find the source code, navigate to your vim files, and find the directory for your plugin manager. (If using Plug, go to /plugged ). Then, find vim-run-python/plugin/run-python.vim .
About
A vim plugin to run Python code without using a terminal. Places the output of your code in a window right below your script.
Настраиваем 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:
Прежде чем начать редактирование нам необходимо создать Guardfile, который является обычным Python скриптом.
#!/usr/bin/env python from livereload.task import Task Task.add('css/*.css') Task.add('*.html')
После чего в текущей директории мы можем запустить сервер LiveReload командой:
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.
Клавиша 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:l :set list!
Я привязал комбинацию 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 ‘tpope/vim-fugitive’. Для корректной работы 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 f :CommandT map b :CommandTBuffer
Теперь по 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, и т.д.)
Пример настроек 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 = '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 c =RopeCodeAssistInsertMode()
Мой файл конфигурации 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’
Комментирование блоков кода с автоматическим определением языка