Каков рекомендуемый способ использования Vim-сворачивания для кода Python
Вопрос
Я заинтересован в том, чтобы включить сворачивание кода в Vim для кода Python.Я заметил несколько способов сделать это.
Есть ли у кого-нибудь предпочтительный способ сворачивания кода Python в Vim?То есть,
- Есть ли у вас какой-то конкретный Vim-плагин, который вы используете и который вам нравится?
- Используете ли вы ручное сворачивание или размещаете маркеры в комментариях?
- Любые другие рекомендуемые способы сворачивания кода для Python в Vim?
Решение
Лично я не могу убедить себя засорять свой код маркерами.Я уже довольно привык (и эффективно) использовать сгибание отступов.Вместе с моим отображением клавиши пробела (см. Ниже) для открытия / закрытия складок и командами zR и zM я чувствую себя как дома.Идеально подходит для Python!
nnoremap <space> za
vnoremap <space> zf
Другие советы
Я использую это файл синтаксиса для Python.Он устанавливает метод сворачивания в синтаксис и сворачивает все классы и функции, но ничего больше.
Еще один плагин для сворачивания кода на Python.Довольно простой, обрабатывающий docstrings, и на GitHub:
Наслаждайтесь!
Python хорошо подходит для сворачивания по отступу, но для написания собственного кода я использую маркеры, поскольку они могут сжать документ так, как вы этого хотите, и могут служить своего рода оглавлением.У меня есть это в моем vimrc, чтобы переключаться между ними, когда я просматриваю чужой код.
#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-репозиторий для vim-конфигурации идей python / django IDE.Убери вилку!
Мне действительно нравится python_ifold
плагин.
Попробуйте этот плагин:
Исходный код Python поставляется с плагином vim syntax вместе с пользовательским файлом vimrc.Проверьте часто задаваемые вопросы по python в 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
.