Je souhaite activer le pliage de code dans Vim pour Python. J'ai remarqué plusieurs façons de le faire.
Quelqu'un at-il une façon préférée de faire Python pliage de code dans Vim? I.e,
Personnellement, je ne peux pas me convaincre de salir mon code avec les marqueurs. Je suis devenu assez habitué (et efficace) à utiliser le pliage en retrait. Avec mon mappage de la barre d'espace (voir ci-dessous) pour ouvrir/fermer les plis et les commandes zR et zM, je suis chez moi. Parfait pour Python!
nnoremap <space> za
vnoremap <space> zf
J'utilise ce fichier de syntaxe pour Python. Il définit la méthode de pliage sur la syntaxe et plie toutes les classes et fonctions, mais rien d'autre.
Encore un autre plugin pour plier Python. Plutôt simple, manipulant les docstrings, et sur le GitHub:
Prendre plaisir!
Python est bien adapté pour le pliage en retrait, un peu pour écrire mon propre code.J'utilise des marqueurs car ils peuvent crunch un document comme vous le souhaitez et peuvent servir comme une sorte de table des matières. J'ai ceci dans mon vimrc pour basculer entre les deux quand je regarde le code de quelqu'un d'autre.
#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 en retrait est très bien pour python. Je fais un dépôt git multi-branches pour vim-config python/Django IDE ideas. Fork away!
J'aime vraiment le python_ifold
plugin .
Essayez ce plugin:
Pour moi, le pliage idéal consiste à plier uniquement les blocs class
et def
, le pliage en retrait est trop à mon goût. Je pense qu'une solution élégante consiste à utiliser le système de syntaxe comme celui-ci n mentionné par Tomas. Cependant, celui-ci est destiné à remplacer le fichier de syntaxe d'origine et il peut finir par être plus ancien que l'original (c'est-à-dire que le script ne mentionne pas Python 3 syntaxe).
Ma solution est de placer dans le ~/.vim/syntax
dossier un fichier nommé python.vim
avec juste les lignes importantes (tirées 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
Activez ensuite simplement le pliage avec :set foldmethod=syntax
.
La source Python est livrée avec un plugin de syntaxe vim avec un fichier vimrc personnalisé. Vérifiez le python FAQ sur vim