2

私はvimを使って日々の仕事の多くを記録しています。私は通常、マトリックスで多くの結果を出します。一日の終わりにそれらを貼り付けると、(時々)0neまたは2列のマトリックスのページがあります

私の質問は、vimにこれをプログラムでフォーマットするように依頼するにはどうすればよいですか?

R) DT = data.frame(x=rnorm(6),y=rnorm(6))
R) DT
           x       y
1 -0.0007499  0.7661
2  1.5559552 -0.6664
3  0.2082094 -0.1598
4 -0.1684766 -0.0536
5  3.1014233 -0.7439
6  0.1985104  2.0415
R) DT2 = data.frame(x=rnorm(7),y=rnorm(7))
R) DT2
          x       y
1 -0.005116 -0.4388
2  2.317381  0.6597
3  0.359883  0.4770
4 -1.426220  0.4911
5  0.468820 -0.3260
6  0.626147 -0.6254
7 -1.086660  2.1973

これに:並べて

R) DT = data.frame(x=rnorm(6),y=rnorm(6)) R) DT2 = data.frame(x=rnorm(7),y=rnorm(7))
R) DT                                     R) DT2
           x       y                                x       y
1 -0.0007499  0.7661                      1 -0.005116 -0.4388
2  1.5559552 -0.6664                      2  2.317381  0.6597
3  0.2082094 -0.1598                      3  0.359883  0.4770
4 -0.1684766 -0.0536                      4 -1.426220  0.4911
5  3.1014233 -0.7439                      5  0.468820 -0.3260
6  0.1985104  2.0415                      6  0.626147 -0.6254
                                          7 -1.086660  2.1973

編集:みんなに感謝します、ケントのソリューションはうまくいきました、奇妙なことにset ve=all、私C-Qのようなブロックを選択することを許可する前に

############
###############
#########
#########
#########

2行目の最後の列に到達できませんでした(gvimonを使用win XP)。

これで非常にうまく機能します。Ingo Karkatプラグインも使用します。」

4

2 に答える 2

1

次の手順を試してください。

:set ve=all

カーソルを行頭に移動R) DT2 = data.frame(x=rnorm(7),y=rnorm(7))

を押しC-Vてモーションマジックで2つ目のブロックを選択

押すd

カーソルを最初の行、2 番目のブロックを貼り付けたい位置に移動します。タイプp

テキストが常にその形式の場合は、次のマッピングを試すことができます。

:nnoremap <leader>mt :let &ve='all'<cr>gg/^R)<CR>n<c-v>G$dgg$3lp  

 

次に、通常モード<leader>mtで変換を行うことができます。

ノート

  • Windows で vim を使用した経験がないため、Windows のブロックごとの選択のマッピングを変更する必要がある場合があります。<C-Q>? わからない。

  • ファイルの最初の行はR)...

  • これにより、2 番目のブロックが次の位置に貼り付けられます: 1 行目の末尾の 3 スペース後、調整する場合はマッピングの数字 3 を変更します

ここに画像の説明を入力

于 2013-01-30T10:46:48.387 に答える
1

その鍵となるのは、ブロック単位のビジュアル モードです。2 番目のブロックの先頭 (最初のブロックの右の列になるはず) に移動し、 を押しCtrl+Vて (Windows では、これはしばしば に再マップされます)、とCtrl+Qで選択範囲を作成します。. . で削除します。次に、最初のブロックの最初の行に移動して、行末に移動し (オプションでパディング空白を追加します)、. で貼り付けます。2 番目のブロックは、カーソルの右側に貼り付ける必要があります。最後に、2 番目のブロックがあった場所に残っている空の行を削除できます。$jjjd$p


私のUnconditionalPaste プラグインは、このタスクを簡素化します。次に、ddまたはを使用して 2 番目のブロックを削除するだけVjjjです。. . d、プラグインのgdpマッピングを使用してブロック単位モードで強制的に貼り付けます。


ブロックのサイズを決定する方法を見つけた場合 (}次の空の行にジャンプするキーがここで役立つ場合があります)、すべてのステップをカスタム マッピングに入れることができます。

于 2013-01-30T10:34:20.507 に答える