質問

から強大な PEP 8

  

[P]リース制限79文字の最大のすべての行。 72文字までの長さを制限し、テキスト(ドキュメンテーション文字列やコメント)の長いブロックを流すための推奨されます。

のVimでPythonコードを編集するとき、私は79に私のtextwidthを設定し、私は文字の制限を打ったときVimは自動的に私のためのPythonコードの長い行をラップします。しかし、コメントやdocstringの中で、私が代わりに72文字でテキストをラップする必要があります。

は、私がコメントやドキュメンテーション文字列にしていたときに72にVimは自動的にセットtextwidthを作るためにどのような方法がありますが、私は終わりだ時に戻ってそれを設定する?

役に立ちましたか?

解決

だから、私は、任意のVimのスクリプトの前に行われませんが、に基づいて決してしましたCで似たようなことについて、この質問あなたが現在しているかどうかをチェックするためにこのヒントコメントに、私は一緒に解決策をハッキングしてきます。

デフォルトでは、これは通常のラインのための79の文字とコメントのための72文字のPEP8-提案の幅を使用しますが、それぞれ、letまたはg:python_normal_text_width変数をg:python_comment_text_widthtingことによって、それらを上書きすることができます。 (個人的に、私は78文字で、通常の行を折り返す。)

あなたのの.vimrcとの中にドロップこの赤ちゃん、あなたが行くように良いことがあります。私は、プラグインとして、後でこれをパッケージ化することがあります。

function! GetPythonTextWidth()
    if !exists('g:python_normal_text_width')
        let normal_text_width = 79
    else
        let normal_text_width = g:python_normal_text_width
    endif

    if !exists('g:python_comment_text_width')
        let comment_text_width = 72
    else
        let comment_text_width = g:python_comment_text_width
    endif

    let cur_syntax = synIDattr(synIDtrans(synID(line("."), col("."), 0)), "name")
    if cur_syntax == "Comment"
        return comment_text_width
    elseif cur_syntax == "String"
        " Check to see if we're in a docstring
        let lnum = line(".")
        while lnum >= 1 && (synIDattr(synIDtrans(synID(lnum, col([lnum, "$"]) - 1, 0)), "name") == "String" || match(getline(lnum), '\v^\s*$') > -1)
            if match(getline(lnum), "\\('''\\|\"\"\"\\)") > -1
                " Assume that any longstring is a docstring
                return comment_text_width
            endif
            let lnum -= 1
        endwhile
    endif

    return normal_text_width
endfunction

augroup pep8
    au!
    autocmd CursorMoved,CursorMovedI * :if &ft == 'python' | :exe 'setlocal textwidth='.GetPythonTextWidth() | :endif
augroup END

他のヒント

は受け入れ答えは素晴らしいです!それは、しかし、コメントを編集/書式設定のために、私が持っている習慣をサポートしていません:私は私の編集を行い、その後、本質的であるgqjコマンドを使用し、「次と合わせ、現在の行の再フォーマット」。それから私はヒット「」ライン毎にそれを繰り返す(コマンド自体は次の行にカーソルを進めます)。私は非常によくvimのスクリプト言語を知らないので、誰かが受け入れ答えに、このためのサポートを追加することができるかもしれません。一方で、私が行っていることは、72にtextwidthを変更するにはファンクションキー(F6)をマップ形式の行をし、その後79にtextwidthバックに変更されます。

nmap <F6> :set textwidth=72<CR>gqj:set textwidth=79<CR>

私はドキュメンテーション文字列にいるとき今、私はちょうど編集、(ESC)を作成し、すべての行が適切にフォーマットされるまで、を繰り返しF6をヒットします。

私は/ ftplugin / python.vim後、私て.vim /に私のmapコマンドと受け入れ答えのスクリプトを追加します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top