2

私は次のようにVimに貼り付けようとしています:

    a_1 "Day"
    a_2 "Week"
    a_neg_1 "Refused"
    a_neg_2 "Don’t know"

ここで、最後の2行をコピーして、最初の2行の上に貼り付けます。このような:

    a_neg_1 "Refused"
    a_neg_2 "Don’t know"
    a_1 "Day"
    a_2 "Week"

複数行のヤンクを行うたびに、常にインラインで貼り付けたいようです。このような:

    aa_neg_1 "Refused"
    a_neg_2 "Don’t know"_1 "Day"
    a_2 "Week"
4

4 に答える 4

3

コピー+貼り付け(またはカット+貼り付け)操作(Vimの用語では:ヤンクまたは削除して配置)はレジスターによって仲介されます。レジスターは、文字単位または行単位のテキスト*を保持できます(を参照:help characterwise)。

  • 「文字ごと」(、、、 <モーション>など)を選択するy5lと、レジスタy2Wは文字単位のテキストになります。y$vy
  • 「行ごと」(、、 <モーション>など)を選択するy2jと、y}レジスタは行ごとのテキストを保持します。Vy

レジスターの内容を配置する場合、テキストの配置は、文字単位か行単位かによって異なります。

  • 文字単位のテキストを配置すると、カーソル位置の直後/直前に挿入されます。
  • 行ごとのテキストを配置すると、カーソルが置かれている行の前後に挿入されます。

テキストがカーソルの位置(カーソルが置かれている行)の後ろに配置されるか前に配置されるかは、使用するputコマンドによって制御されます。

  • p(小文字)テキストカーソルの後ろに置きます(または、レジスタが現在行単位の場合はその行の後に)
  • P(大文字)テキストをカーソルの(または、レジスタが現在行単位の場合はその行の前)に配置します。

つまり、ヤンク/削除方法と両方の配置方法が最終結果に影響します。


説明に基づくと、p文字単位のテキストを配置するために使用しているようです(おそらくv、またはシングルクリックのマウスベースの選択を介して)。

代わりに、P行ごとのテキストで(前に置く)を使用する必要があります。キーボードベースの選択を行う場合は、 (小文字V)の代わりに(大文字)を使用してvください。マウスベースの選択を行う場合は、選択を開始するときにシングルクリックではなくトリプルクリックを実行します。P次に、最初の行に移動したら、ヤンクまたは削除して、最後の「貼り付け」を実行します。


*レジスタは、ブロック単位のデータを保持することもできます(たとえば、Control-Vブロック単位のビジュアルモードから)。置くと、ブロックごとに配置されます。

于 2012-06-12T05:07:04.747 に答える
2

カーソルの後に小文字pを貼り付けます。

カーソルの前に大文字Pを貼り付けます。

于 2012-06-11T21:08:24.133 に答える
1

ビジュアルモードでyは、文字のセットをYヤンクし、行のセットをヤンクします。

文字をヤンクする場合、次のputは文字に依存するため、問題が発生します。代わりに行全体をヤンクするYと、必要な動作が得られるはずです。

于 2012-06-11T21:59:18.813 に答える
1

putexモードで単純に使用します。

:put
于 2012-06-12T13:36:18.183 に答える