5

私のVim設定にはが含まれていますset formatoptions=c,q,a。私は次の問題に完全に悩まされています(|カーソル位置を示します。このコメント行に存在するという事実だけが重要であるため、正確な位置は重要ではありません)。

" This is a long line which we would like to wrap. However, something sick is go|ing to happen if we hit "gqip" here!
if has('win32') || has('win64')
  set runtimepath^=~/.vim
  set runtimepath+=~/.vim/after
endif

今、私たちはヒットしgqipます:

" This is a long line which we would like to wrap. However, something sick is
" go|ing to happen if we hit "gqip" here!
if has('win32') || has('win64') set runtimepath^=~/.vim set
  runtimepath+=~/.vim/after endif

それが行うことは、実際にはすべてを単一の段落として扱います。(はい、空白行で区切るとこの動作が妨げられることはわかっていますが、問題は解決しません!)私が望んでいるのは確かに次のとおりです。

" This is a long line which we would like to wrap. However, something sick is
" go|ing to happen if we hit "gqip" here!
if has('win32') || has('win64')
  set runtimepath^=~/.vim
  set runtimepath+=~/.vim/after
endif

言い換えれば、gqどういうわけかコードを忘れてコメントだけで作業できれば素晴らしいと思います。

ボーナス:バッファ全体でこのフォーマット(コメントのみをラップ)を1回のショットで行うにはどうすればよいですか?なぜなら、理想的には、ファイルを保存するための特別なフォーマットフックにそれらを移動したいからです。

4

5 に答える 5

16

実際には、すべてを1つの段落として扱います

さて、でgqip、あなたはそれを言った!あなたは正しい動きを選ぶ必要があります。この単一行の場合は、になりますgqq。3行の場合、それはgq2jです。行数が多すぎて数えられない場合は、ビジュアルモードを使用してくださいVjjjjjjgq

于 2012-12-11T07:36:46.527 に答える
4

ip@IngoKarkatが指摘したように、テキストオブジェクトの意味はかなり狭いです。これは、空白行で区切られたテキスト段落です。

この問題に対処するために使用できるプラグインも作成しました。

textobj-comment-コメント用のテキストオブジェクト

SameSyntaxMotionプラグインとは対照的に、 textobj-commentは、ファイルタイプ固有の'comments'設定に依存してコメントを識別します。つまり、構文の強調表示をオフにしても機能するはずです。

gqicコメントをフォーマットするために使用します。

上級者向けのヒント:カーソル位置が保持されるため、優先gwしてください。gq

于 2013-07-06T12:19:17.277 に答える
3

私のSameSyntaxMotionプラグインでは、テキストオブジェクトを使用してay、カーソルが置かれているコメントのブロック全体を表し、を使用して再フォーマットすることができgqayます。

于 2012-12-11T13:58:54.433 に答える
2

を使用してコメント行を検索し:g、それらの行を折り返します。

:%g/^"/normal gq_
于 2012-12-11T00:37:30.807 に答える
0

パーティーに少し遅れていることは知っていますが、同じ問題を自分で調べているときにこの質問を見つけました。どうですか:

set formatprg=fmt\ --prefix='\"'

With that gqip seems to behave as required. I will definitely be checking out the SameSyntaxMotion plugin though.

于 2014-05-27T17:51:50.367 に答える