-4

vim を使用して、次のテキスト ブロックを変換したい

            sa.Column('id', sa.Integer, primary_key=True),
            sa.Column('title', sa.String(100)),
            sa.Column('isbn', sa.String(20)),
            sa.Column('authors',sa.String(400),nullable=False),
            sa.Column('year',sa.Integer,nullable=False)

  id          = Column(Integer, primary_key=True)
  title       = Column(String(100))
  isbn        = Column(String(20))
  authors     = Column(String(400),nullable=False)
  year        = Column(Integer,nullable=False)

これを行う方法?ありがとうございました。

4

3 に答える 3

1

変換する行数にもよりますが (たとえば、これを必要としているのは本当にこの 2 行だけですか?)、グループ化を使用している行が 30 行を超える場合は、テキストの置換アプローチを使用することを検討します。

:%s/\<sa[.]//g
:%s/\(Column(\)'\([a-z]\+\)',\(.\+\)/\2    =\1 \3/g
于 2013-06-24T15:53:31.150 に答える
0

ここにあなたを近づけるマクロがあります:

:call setreg('a',"0f'ldw0pa =  \<esc>df.f'df.j")

このコマンドは、記録されたマクロをaレジスタに入れるので、 を入力して現在の行で呼び出す@aか、 を使用して複数の行で呼び出すことができます5@a

基本的に、次の手順を実行します。

  • 行の最初にジャンプし'、次の単語を削除します
  • 行頭にジャンプして単語を貼り付け、その後に=
  • =次から次へ削除.
  • 次へジャンプして次'まで削除.

末尾のコンマは削除されず (:s[ubstitute]そのためにグローバルを使用できます)、整列も行われません。

マクロの記録と使用に慣れる価値は十分にあります。これらは、この種の反復可能なアドホック編集に最適です。繰り返し可能な方法でマクロを記録するように注意する必要があります。

于 2013-06-23T14:04:07.700 に答える