Каков рекомендуемый способ использования Vim folding для кода Python
Мне интересно включить фальцовку кода в Vim для кода Python. Я заметил несколько способов сделать это.
Есть ли у кого-нибудь предпочтительный способ сделать код Python в Vim? I.e,
- У вас есть специальный плагин Vim, который вы используете и как?
- Вы используете ручную фальцовку или помещаете маркеры в комментарии?
- Любые другие рекомендуемые способы выполнения сворачивания кода для Python в Vim?
Ответы
Ответ 1
Лично я не могу убедить себя помешать моему коду маркерами. Я привык к (и эффективному) при использовании отступов. Вместе с моим отображением пробела (см. Ниже), чтобы открывать/закрывать складки и команды zR и zM, я дома. Идеально подходит для Python!
nnoremap <space> za
vnoremap <space> zf
Ответ 2
Я использую этот файл синтаксиса для Python. Он устанавливает метод сгибания в синтаксис и сбрасывает все классы и функции, но ничего больше.
Ответ 3
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>
Ответ 4
Мне очень нравится python_ifold
плагин.
Ответ 5
Я думаю, что сложение отступа отлично подходит для python. Я делаю многоразветвленную репо для wm-config python/django IDE. Убирайся!
http://github.com/skyl/vim-config-python-ide
Ответ 6
Попробуйте этот плагин:
http://vim.sourceforge.net/scripts/script.php?script_id=515
Ответ 7
Еще один плагин для складывания кода Python. Скорее просто, обрабатывая docstrings, и на GitHub:
SimpylFold
Наслаждайтесь!
Ответ 8
Источник Python поставляется с плагином синтаксиса vim вместе с пользовательским vimrc файлом. Проверьте часто задаваемые вопросы о python на vim
Ответ 9
Для меня идеальная складка состоит в том, чтобы сложить только блоки class
и def
, отступы с отступом слишком много для моего вкуса. Я думаю, что одним из элегантных решений является использование синтаксической системы, такой как один, упомянутый Томасом. Тем не менее, это предназначено для замены исходного файла синтаксиса, и оно может закончиться старше исходного (т.е. Что script не упоминает синтаксис Python 3).
Мое решение состоит в том, чтобы поместить в папку ~/.vim/syntax
файл с именем python.vim
только с важными строками (взятыми из вышеприведенного script):
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
.