Quelle est la méthode recommandée pour utiliser Vim pour plier le code Python

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

  •  21-08-2019
  •  | 
  •  

Question

Je suis intéressé par le code permettant le pliage en Vim pour le code Python. Je l'ai remarqué plusieurs façons de le faire.

Quelqu'un at-il une meilleure façon de faire du code Python pliant dans vim? I.e.,

  • Avez-vous un plugin Vim particulier que vous utilisez et comme?
  • Est-ce que vous utilisez le pliage manuel ou vous placez des marqueurs dans les commentaires?
  • Toutes les autres méthodes recommandées pour faire le pliage de code pour Python dans vim?
Était-ce utile?

La solution

Personnellement, je ne peux pas me convaincre de litière mon code avec les marqueurs. Je suis devenu assez utilisé (et efficace) à l'aide indent-pliage. Avec mon application de la barre d'espace (voir ci-dessous) aux plis d'ouverture / fermeture et les commandes et ZM zR, je suis à la maison. Parfait pour Python!

  

nnoremap <space> za

     

vnoremap <space> zf

Autres conseils

J'utilise ce fichier de syntaxe pour Python . Il définit la méthode de pliage à la syntaxe et se replie toutes les classes et fonctions, mais rien d'autre.

Encore un autre plug-in pour le pliage du code Python. Plutôt simple, la manipulation docstrings, et sur le GitHub:

SimpylFold

Amusez-vous!

Python est bien adapté pour plier le tiret, peu pour écrire mon propre code j'utiliser des marqueurs comme ils peuvent croquer un document sur la façon dont vous le souhaitez et peut servir comme une sorte d'une table des matières. J'ai dans mon vimrc pour faire basculer entre les deux quand je consulte quelqu'un Code 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>

Je pense que le pliage tiret est très bien pour python. Je fais une git à plusieurs branches pour des idées python vim-config / django IDE. Fourchette loin!

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

Je aime vraiment le plug-in python_ifold.

La source Python est livré avec un plug-in de syntaxe vim avec un fichier vimrc personnalisé. Vérifiez le python FAQ sur vim

Pour moi, le pliage idéal est de plier juste le et class blocs def, pliage tiret est trop à mon goût. Je pense qu'une solution élégante est d'utiliser le système de cette syntaxe un mentionné par Tomas. Cependant, celui-ci est destiné à remplacer le fichier de syntaxe d'origine et il peut être plus fin que l'original (à savoir ce script ne mentionne pas la syntaxe Python 3).

Ma solution consiste à placer dans le dossier un fichier nommé ~/.vim/syntax python.vim par les lignes importantes (prises à partir du script ci-dessus):

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

Ensuite, il suffit d'activer le pliage avec :set foldmethod=syntax.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top