web-dev-qa-db-ja.com

viエディター、ブロックのコピー(通常のアクションではありません)

Viエディターでは、ブロックをコピーする必要があります。多くの方法がありますが、1つの方法は非常に迅速です。

  1. 何らかの方法で最初の行にラベルを付け、

  2. その後、何らかの方法で終了行にラベルを付けます。

  3. 次に、ラベルの付いた行をコピーするコマンドを入力します。

  4. 次にコピーします。「p」を使用できますが、わかりません。

誰もがコマンドを知っています(yyまたは10yyではありません)?前もって感謝します。

50
Yang

覚えやすい別のオプションは、2行にマークを付けることです。 ma そして mb、次に:'a,'byankを実行します。

このタスクを達成するためのさまざまな方法。

33
Randy Morris

ただ使う V 行を選択するか v 文字を選択するか Ctrlv ブロックを選択します。

選択範囲がコピーしたい領域にまたがっている場合 y そして使用 p 好きな場所に貼り付けます...

86
André Keller

ドキュメントによると:

カットアンドペースト:

  1. カットを開始する場所にカーソルを置きます。
  2. 押す v 文字を選択する(または大文字 V 行全体を選択します)。
  3. カットするものの最後にカーソルを移動します。
  4. 押す d カットする(または y コピーする)。
  5. 貼り付けたい場所に移動します。
  6. 押す P カーソルの前に貼り付ける、または p 後に貼り付けます。

コピーと貼り付けは、dではなくyを押すステップ4を除いて、同じステップで実行されます。

d = delete = cut

y = yank = copy

47
Kaleem Ullah

ファイルにマークを配置したいようです。

mx xという名前のマークをカーソルの下に置きます

y'x カーソルの現在位置とmark xを含む行の間のすべてをヤンクします。

使用できます 'x カーソルをマークのある行に移動するだけです。

使用できます `x (バックティック)マークの正確な位置に移動します。


私がいつもしていることの1つは、カーソルとマークxの間のすべてをクリップボードにヤンクすることです

次のようにできます:

"+y'x

注:一部の環境では、クリップボードバッファーは*ではなく+で表されます。


いくつかの良い答えと同様の質問:

15
jahroy

以下のコマンドの方がはるかに便利だと思いました。 6から12行をコピーして、現在のカーソル位置から貼り付ける場合。

:6,12 co .

6〜12行をコピーして、100行目から貼り付ける場合。

:6,12t100

ソース: https://www.reddit.com/r/vim/comments/8i6vbd/efficient_ways_of_copying_few_lines/

10
catuf

そのためのキーボードショートカットは次のとおりです。

  1. コピーの場合:ブロックの先頭にカーソルを置き、mdを押してから、ブロックの末尾に移動してy'dを押します。これにより、貼り付けるブロックが選択され、pが押されます。

  2. カットの場合:ブロックの先頭にカーソルを置き、maを押してから、ブロックの最後に移動してd'aを押します。これにより、貼り付けるブロックが選択され、pが押されます。

4
Aman Khare

Viで行うように、たとえば、3020から最後まで行をヤンクするには、次のコマンドを実行します(ブロックをファイルに書き込みます)。

:3020、$ w/tmp/yank

このブロックを別の行/ファイルに書き込むには、目的の位置に移動して次のコマンドを実行します(前に書き込まれたファイルを挿入します)。

:r/tmp/yank

(注意:ファイルを削除することを忘れないでください:/ tmp/yank)

1
user9091660