コメントやdocstringの中で短いtextwidthを使用します
質問
から強大な 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_width
tingことによって、それらを上書きすることができます。 (個人的に、私は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コマンドと受け入れ答えのスクリプトを追加します。