Подтвердить что ты не робот

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

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

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

Спасибо

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

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

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

Также я создал файл python.vim в $HOME/.vim/ftplugin/, содержащий этот script, поэтому я могу запустить код 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 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
4b9b3361

Ответ 1

У меня на самом деле не очень много специфических мод 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)
  • Множество разделов (как вертикальных, так и горизонтальных)

Ответ 2

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

  • Pathogen: лучше организованная структура плагина vim в каталоге .vim
  • comments.vim: более быстрый языковой комментирование с помощью ctrl-c и ctrl-x
  • NERDTree
  • вкладки NERDTree
  • syntastic: плагин проверки синтаксиса (для меня в основном используется для кода, отличного от python)
  • surround.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()