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

StackOverflow https://stackoverflow.com/questions/357785

  •  21-08-2019
  •  | 
  •  

Вопрос

Я заинтересован в том, чтобы включить сворачивание кода в 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.Убери вилку!

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

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

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

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

Исходный код 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top