Каков рекомендуемый способ использования Vim folding для кода Python


меня интересует возможность сворачивания кода в Vim для кода Python. Я заметил несколько способов сделать это.

есть ли у кого-нибудь предпочтительный способ сделать код Python сворачивание в Vim? То есть,

  • у вас есть конкретный плагин Vim, который вы используете и любите?
  • вы используете ручное складывание или размещаете маркеры в комментариях?
  • любые другие рекомендуемые способы сделать сворачивание кода для Python в Vim?
9 94

9 ответов:

лично я не могу убедить себя, чтобы засорить мой код с маркерами. Я стал довольно привычным (и эффективным) при использовании складывания отступа. Вместе с моим отображением пробела (см. ниже), чтобы открыть/закрыть складки и команды zR и zM, я ПРЯМО ДОМА. Идеально подходит для Python!

nnoremap <space> za

vnoremap <space> zf

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

Python хорошо подходит для сворачивания на отступ, бит для написания моего собственного кода я использую маркеры, поскольку они могут сжимать документ так, как вы этого хотите, и могут служить своего рода оглавлением. У меня есть это в моем vimrc, чтобы переключаться между ними, когда я просматриваю чей-то код elses.

#Toggle fold methods \fo
let g:FoldMethod = 0
map <leader>fo :call ToggleFold()<cr>
fun! ToggleFold()
    if g:FoldMethod == 0
        exe 'set foldmethod=indent'
        let g:FoldMethod = 1
    else
        exe 'set foldmethod=marker'
        let g:FoldMethod = 0
    endif
endfun
#Add markers (trigger on class Foo line)
nnoremap ,f2 ^wywO#<c-r>0 {{{2<esc>
nnoremap ,f3 ^wywO#<c-r>0 {{{3<esc> 
nnoremap ,f4 ^wywO#<c-r>0 {{{4<esc>
nnoremap ,f1 ^wywO#<c-r>0 {{{1<esc>

Я думаю, что складывание отступа отлично подходит для python. Я делаю мульти-разветвленные Git репозитория для ВИМ-конфиг питон/Джанго интегрированной среде разработки идеи. Вилка прочь!

http://github.com/skyl/vim-config-python-ide

Мне очень нравится python_ifold плагин.

попробуйте этот плагин:

http://vim.sourceforge.net/scripts/script.php?script_id=515

еще один плагин для складывания кода Python. Довольно простой, обработка docstrings, и на GitHub:

SimpylFold

наслаждайтесь!

источник Python поставляется с плагином синтаксиса vim вместе с пользовательским файлом vimrc. Проверьте Python FAQ на vim

для меня идеальная складка-это сложить только class и def блоки, отступ складывания слишком много на мой вкус. Я думаю, что одним из элегантных решений является использование синтаксической системы, как это один упоминал Томас. Однако этот файл предназначен для замены исходного файла синтаксиса, и он может оказаться старше оригинала (т. е. этот скрипт не упоминает синтаксис Python 3).

мое решение-разместить в ~/.vim/syntax папке файл с именем python.vim С важные строки (взятые из приведенного выше скрипта):

syn match   pythonDefStatement  /^\s*\%(def\|class\)/
       \ nextgroup=pythonFunction skipwhite
syn region  pythonFunctionFold  start="^\z(\s*\)\%(def\|class\)\>"
       \ end="\ze\%(\s*\n\)\+\%(\z1\s\)\@!." fold transparent

hi link pythonDefStatement Statement

затем просто активируйте складывание с :set foldmethod=syntax.