vimスクリプト: "put ="をさらに変更するには?

vimスクリプト:

コメントを挿入する方法が気に入らないので、c-vimプラグインをハッキングしようとしています。私はこれが欲しい:

/* comment */

しかし、それは私に次のものを与えます:

/* comment
 */

きっと理由があるはずなのに気に入らない。だから、c.vimファイルを調べて、次のことを見つけました。

function! C_CodeComment( mode, style )
   if a:mode=="a"
     if a:style == 'yes'
       silent exe ":s#^#/\* #"
       silent put = ' */'
     else
       silent exe ":s#^#//#"
     endif
   endif
   if a:mode=="v"
     if a:style == 'yes'
       silent exe ":'<,'>s/^/ \* /"
       silent exe ":'< s'^ '\/'"
       silent exe ":'>"
       silent put = ' */'
     else
       silent exe ":'<,'>s#^#//#"
     endif
   endif
 endfunction

このステートメントのドキュメントが見つからず、vimがコメントの最後の行に追加されるput =ように変更する必要があると確信しています。*/誰もが正しい方向に私を指すことができますか?

ベストアンサー1

C_CodeCommentこの関数は、最新バージョンのVimに付属しているファイルには定義されていません。検索してみると使っているようです。Fritz MehnerのC/C++プラグイン。それは提供しますC/C++>コメント>コード->説明/* */メニュー項目(および\c*マップ1C_CodeComment)を使用してください。

このコマンドはput = ' */'新しい行を追加します(参照::help :put)内容が含まれています特別登録=、ちょうど次のように評価します。Vim表現。ここで使用される特定の式は、3つの単純な文字列(スペース、アスタリスク、スラッシュ)です。

次の行を追加して、最後の行2*/の末尾に並べ替えることができます。

silent normal kJ^

silent put = ' */'ラインの後ろに。最後のコメント行()まで移動して行()とk組み合わせてから、カーソルをその行の空白ではなく最初の文字()に移動します。マッピング1自体は、カーソルを次の行に移動することで構成されています。新しいコメント領域1行。*/J^\coj

しかしC_RemoveCCommentこれは関数の仮定を破るでしょう( "inverse"関数で使用されますC_CommentCode):*/行の先頭(オプションのスペースの後ろ)を見つけて処理することを期待します。
一度も使わないならC/C++>コメント>コメント->コードメニュー項目または\coマッピング1を使用すると、このプラグインのコメント解除機能を使用できない可能性があります。


1\マップされた「リーダー」をオーバーライドすると異なる場合があります。localmapleader
2(私の意見では)これにより、複数行のコメントが奇妙に見えます(たとえば、コメント機能を呼び出す前にGUI選択またはビジュアルモードで複数行を選択します)。

中央の2行を選択した後、

    foo();
    bar();
    baz();
    quux();

~になる

    foo();
/*     bar();
 *     baz(); */
    quux();

これは奇妙なスタイルのように見えます(通常、*中間行に引出線を使用している場合は、開始アスタリスク/**引出線、および*/末尾のアスタリスクが同じ列に配置されます)。

おすすめ記事