Опишите свой собственный редактор Vim для разработки на Python / Django? - PullRequest
27 голосов
/ 27 октября 2010

Я недавно полностью перешел на Vim для всей своей разработки на Python / Django. Мне потребовалось много времени, чтобы настроить его так, как сегодня, и Бог знает, как мне было трудно найти помощь в отношении лучших плагинов vim, подходящих для разработки на Python / Django.

Я решил задать этот вопрос, чтобы такие люди, как я, могли напрямую воспользоваться вашим опытом: Вы создали идеальный редактор Python / Djangoish Vim? Опишите это для нас (плагины, скрипты, настроенные .vimrc, colorschemes ..etc).

Спасибо

Моя конфигурация

Хорошо, это моя собственная конфигурация. на самом деле я решил создать простую конфигурацию Vim, чтобы я мог освоить небольшое количество плагинов, которые я выбрал для установки, вместо того, чтобы создавать большой стек плагинов, которые я никогда не буду осваивать или использовать. Вот список плагинов, которые я использую чаще всего:

  • NERDTree для управления файлами,
  • SnipMate , который является реализацией функции фрагментов TextMate,
  • Завершение кода обрабатывается с Omnicompletion, который по умолчанию поставляется в Vim,
  • Pydoc для интеграции документации Python в Vim,
  • TagList для просмотра исходного кода, очень полезно для больших файлов.
  • Pyflakes скрипт для подсветки кода Python на лету с предупреждениями

Также я создал файл python.vim в $ HOME / .vim / ftplugin /, содержащий этот сценарий, чтобы я мог запускать код python из Vim, просто выполнив Shift + e:

" Execute file being edited with <Shift> + e:
map <buffer> <S-e> :w<CR>:!/usr/bin/env python % <CR>

Также я собрал несколько полезных настроек .vimrc:

set nocompatible    " use vim defaults
set number          " show line numbers
colorscheme desert
set tags=tags;$HOME/.vim/tags/ "recursively searches directory for 'tags' file
set expandtab       " tabs are converted to spac
set tabstop=4       " numbers of spaces of tab character
set shiftwidth=4    " numbers of spaces to (auto)indent
set showcmd         " display incomplete commands
set hlsearch        " highlight searches
set incsearch       " do incremental searching
set ruler           " show the cursor position all the time
set numberwidth=4   " line numbering takes up 5 spaces
set ignorecase      " ignore case when searching
set nowrap          " stop lines from wrapping
filetype plugin indent on " turn on the indent plugins
syntax on                 " syntax highlighing
" TagList Plugin Configuration
let Tlist_Ctags_Cmd='/usr/bin/ctags'       " point taglist to ctags
let Tlist_GainFocus_On_ToggleOpen = 1      " Focus on the taglist when its toggled
let Tlist_Close_On_Select = 1              " Close when something's selected
let Tlist_Use_Right_Window = 1             " Project uses the left window
let Tlist_File_Fold_Auto_Close = 1         " Close folds for inactive files
" Omnicompletion functions
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
au FileType py set expandtab
au FileType py set foldmethod=indent
map <F2> :previous<CR>                  " map F2 to open previous buffer
map <F3> :next<CR>                      " map F3 to open next buffer
map <F4> :NERDTreeToggle<CR>            " map F4 to open NERDTree
map <F5> :TlistToggle<CR>               " map F5 to toggle the Tag Listing
map <silent><C-Left> <C-T>              " taglist - map Ctrl-LeftArrow to jump to the method/property under your cursor
map <silent><C-Right> <C-]>             " taglist - map Ctrl-RhitArrow to jump back to your source code
map <silent><A-Right> :tabnext<CR>      " map Alt-RightArrow to jump to the next tab
map <silent><A-Left> :tabprevious<CR>   " map Alt-LeftArrow to jump to the previous tab

Ответы [ 2 ]

5 голосов
/ 27 октября 2010

У меня не так много специфичных для Django модов, хотя я дал синтаксису jinja2 более высокий приоритет, чем синтаксис шаблона django.

Специально для Python:Проверка синтаксиса Python Я использую PyFlakes с highlight SpellBad ctermbg=darkred Иногда (редко) я чувствовал потребность в автозаполнении, и в этом случае я использую Eclim В остальном, материал по умолчанию.Размер вкладки 4, программные вкладки и т. Д ... Настройки Vim:

  • 256 Цветовая схема desert256

    if ((&term == 'screen') || (&term == 'screen-bce') || (&term == 'xterm')) 
        set t_Co=256                                                          
        set t_Sb=^[[4%dm                                                      
        set t_Sf=^[[3%dm                                                      
        colo desert256                                                        
    endif
    
  • Много вкладок (tabe, tabn)
  • Много расколов (как вертикальных, так и горизонтальных)
4 голосов
/ 07 марта 2013

Я не собираюсь публиковать здесь весь свой файл .vimrc, но у меня есть такая же настройка, как и у вас. Это менее специфично для Python / Django, за исключением некоторых пользовательских фрагментов для snipMate и python-mode. Вот плагины vim, которые я использую:

  • Патоген : лучше организованная структура плагинов vim в .vim dir
  • comments.vim : более быстрое комментирование с использованием языка ctrl-c и ctrl-x
  • NERDTree
  • Вкладки NERDTree
  • syntastic : плагин проверки синтаксиса (для меня в основном используется для непифонного кода)
  • round.vim и autoclose.vim : упрощенная обработка скобок, открывающих и закрывающих тегов и т. Д.
  • matchit : расширяет команду %, чтобы также сопоставлять и обводить, например, html-теги. Для обхода операторов кода Python (например, if-elif-else) вы можете скачать python_match.vim и поместить его в свой ftplugin/python/ каталог. Я положил его в ~/.vim/bundle/matchit/ftplugin/python/
  • python-mode : Отличный плагин для редактирования Python. Имеет автоматическую проверку pyflakes / pep8 (или pylint, если хотите) при сохранении файла. Я деактивировал автозавершение через let g:pymode_rope = 0 в моем файле .vimrc, так как оно отставало для меня при каждом сохранении файла. Также подсветка синтаксиса расширена для кода Python.
  • snipMate (пользовательские фрагменты для python приведены ниже)
  • tagBar : Я не могу жить без набросков для огромных файлов кода.

Некоторые пользовательские фрагменты Python, которые я использую довольно часто:

snippet #utf
    # -*- coding: utf-8 -*-

snippet ds
    """
    ${1: }
    """
# just the first (or last) three quites for the docstring
snippet dss
    """${1: }
# For file headers
snippet dsfile  
    """
    :File: ${1:`Filename('$1.py', 'foo.py')`}
    :Author: ${2:`g:snips_author`}
    :Description: ${3}
    """
snippet pdb
    import pdb
    pdb.set_trace()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...