1

私はこのテキストを持っています:

* configobj
* pymongo
* tornado
* pandas

そしてそれを次のように変換したいと思います:

configobj, pymongo, tornado, pandas

これを行う最も効率的な方法は何ですか?


追加:これは私が自分で思いついたものです:

  1. cin configobjdoから始めて、C-v e j j j yテキストのブロックをヤンクします。
  2. それpから、好きな場所に配置します。
  3. 次に、configobj行の最後に移動します
  4. ヒットC-vj j jて下へ
  5. A次に、を挿入し,てヒットしますC-[
  6. C-vwith を再度使用しxて、最後のスペースを削除し、最後のコンマを削除します。

そして、 の最後の文字configobjが切れていることに気がついたので、戻って追加する必要があります。

編集

これがバッファの一部であり、バッファ全体ではないことを明記していないことをお詫びします。

4

5 に答える 5

5
  1. ブロックを視覚的に選択します。

  2. a が続くすべての改行を a に置き換え*ます,

    :'<,'>s/\n\*/,
    
  3. 最初の を削除し*<space>ます。

    xx
    
于 2013-10-24T13:37:30.990 に答える
2

あなたの質問の例だけであれば、ワンショットでそれを行うことができます:

%s/^\*//|%join|s/ /, /g

行にスペースが含まれている場合、上記のコマンドは機能しません。

Joinプラグイン ( https://github.com/sk1418/Join ) をインストールして、次を押すことも検討できます。

%s/^\*//|%J ', '

これは、行にもスペースがある場合に機能します。

于 2013-10-24T13:19:14.847 に答える
2

これは、マクロの適切な使用例です。

最初の星にカーソルを合わせて、次を実行します ( ^[is Escape):

qqxxA,^[Jq3@qx

内訳:

  • qq- レジスタへのマクロの記録を開始するq
  • xx- 削除*とスペース
  • A,^[-,行末に a を追加し、挿入モードを終了します
  • J- 次の行を現在の行に結合する
  • q- マクロを終了します
  • 3@q- マクロを 3 回実行する
  • x- 末尾のカンマを削除

後付け: リスト要素が句読点 ( ., ?, !) で終わる場合、 の動作はオプションJの影響を受けるjoinspacesため、このような場合、このマクロは要素間に余分なスペースを残す可能性があります。詳細については、を参照:help 'joinspaces'してください。

于 2013-10-24T13:34:05.167 に答える
1

正規表現を使用します:

%s/^\s*\*\s*//    -- remove stars
%s/$\n/, /        -- join
%s/, $//          -- remove the last trailing comma
于 2013-10-24T13:19:16.940 に答える
1

これが最も効率的な方法かどうかはわかりませんが、仕事は完了します:

:execute "normal ggVGJ" | s/\v\s*\*\s*// | s/\s*\*\s*/, /g

次の結果が得られます。

configobj, pymongo, tornado, pandas
于 2013-10-24T13:20:10.187 に答える