web-dev-qa-db-ja.com

Pythonコードに対してVim折りたたみを使用する推奨方法は何ですか

PythonコードのVimでコードの折りたたみを有効にすることに興味があります。これを行うには複数の方法があります。

Python Vimでコードを折り畳むのに好ましい方法はありますか?

  • 特定のVimプラグインを使用していますか?
  • 手動で折りたたむか、コメントにマーカーを配置しますか?
  • VimでPython?
102
Paul D. Eden

個人的には、コードでマーカーを散らかすように説得することはできません。私は、インデント折り畳みを使うことにかなり慣れています(そして効率的です)。折り畳みを開閉するためのスペースバー(以下を参照)とzRおよびzMコマンドのマッピングと合わせて、私は家にいます。 Pythonに最適!

nnoremap <space> za

vnoremap <space> zf

105
Walter

Pythonでは this 構文ファイルを使用します。折りたたみ方法を構文に設定し、すべてのクラスと関数を折りたたみますが、それ以外は何も折りたたみません。

23
Tomas

折り畳むためのさらに別のプラグインPythonコード。かなり単純で、ドキュメント文字列を処理し、GitHubで:

SimpylFold

楽しい!

8
iago-lito

Pythonはインデントで折り畳むのに適しています。自分のコードを書くのに適しています。マーカーを使用すると、ドキュメントを好きなように押しつぶし、一種の目次として使用できます。私はvimrcにこれを持っているので、他の誰かのコードを表示しているときに2つを切り替えることができます。

#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>
7
Michael

私は、インデントの折り畳みがPythonに適していると思います。 vim-config python/Djangoのマルチブランチgitリポジトリを作成していますIDE idea。Fork away!

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

5
Skylar Saveland
5
Nick Presta

このプラグインを試してください:

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

4
Oli

私にとって理想的な折り畳みは、classブロックとdefブロックのみを折り畳むことです。インデント折り畳みは、私の好みには多すぎます。エレガントな解決策の1つは、このような構文システムを使用することだと思います one Tomasが言及しました。ただし、これは元の構文ファイルを置き換えることを意図しており、元の構文ファイルよりも古いものになる可能性があります(つまり、そのスクリプトは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を使用して折りたたみを有効にします。

3
Genma

Pythonソースには、vim構文プラグインとカスタムvimrcファイルが付属しています。 python FAQ on vim

2
ONODEVO