web-dev-qa-db-ja.com

カーソルがある行に貼り付ける方法は?

コマンド p カーソルの下に貼り付け、 P カーソルの上に貼り付けます。カーソルがある行に貼り付けるコマンドは何ですか?

49
Kitcha

これはすべて、貼り付けているレジスタのデータの種類によって異なります。データが行指向のデータである場合(とヤンク yy たとえば、カーソルの上または下に行全体として貼り付けられます。データが文字指向の場合(例: y2w)その後、現在の行のカーソル位置またはその前に貼り付けられます。

見る :help linewise-registerレジスターのタイプとputコマンド間の相互作用に関する詳細情報。

35
Randy Morris

GvimのEditメニューには、次のリストが表示されます。

  • 貼り付け= "+gP

  • 前に置く= [p

  • 後置= ]p

Windowsでvimを実行している場合、次を実行して取得できます Ctrl+C そして Ctrl+V 期待どおりに動作するように:

source $VIMRUNTIME/mswin.vim
behave mswin
17

現在の行をそのまま保持する場合は、行の上または下に貼り付けます。

現在の行を上書きしたい場合は、最初に削除する必要があります。つまり、次の行が代わりになりますthen新しい現在の行の上に貼り付けます。

それを行うには複数の方法があります。

  • "_ddP

    1. "_ddは、「ブラックホールレジスタ」内の現在の行全体を削除し、次の行が現在の行になります。

    2. Pは、名前のないレジスタの内容を現在の行の上に配置します。

  • Vp

    1. VVISUAL LINEモードになり、現在の行全体を視覚的に選択します

    2. pは、選択を名前のないレジスタの内容に置き換えます

  • S<C-r>"

    1. Sは、現在の行のコンテンツを削除し、[〜#〜] insert [〜#〜]モードにします

    2. <C-r>"は、名前のないレジスタの内容を書き込みます

最後の2つのオプションには興味深い副作用があります。前の行の内容が名前のないレジスタに入れられ、同じ内容で複数の貼り付けを行うことができなくなります。

幸いなことに、この状況を回避できます。

  • 最初の解決策で言及した「ブラックホールレジスタ」は、うまく機能します。ブラックホールのようです。入れたものはすべて永久に消えるので、pPの使用を続けるには、名前のないレジスタがペーストごとに同じであるというある程度の自信を持って続行できます。

  • Vimでは、マクロを保存したり、繰り返し貼り付けたりするために使用できる26個のアルファベットレジスタにアクセスできます。

    2番目の解決策を開始点として、最初に行全体をレジスタ"a"ayyでヤンクしてから、別の行でV"apを実行します。

ただし、上記はすべて、貼り付けるテキストが実際の行であると想定しています。 Vimは「行単位」と「文字単位」を区別します。文字単位のコンテキストで行を貼り付けたり、その逆を行ったりすることはできません。

yyで行全体をヤンクすると、行方向または文字方向が維持され、同じ行の2つの文字間でpを使用できなくなります。そのためには、ヤンクしたものがVimによって行単位として解釈されないようにする必要があります。たとえば、最初の行の最初の文字にいるときに、ipsum dolorをヤンクし、それをloremsitの間の通常の場所に配置するとします。

ipsum dolor
lorem  sit amet

"ayeeと入力して、ヤンクしたテキストをレジスタ"aに入れ、必要な場所にカーソルを置いて、"aPと入力する必要があります。

8
romainl

挿入モードで貼り付けるには、押すだけです Control+R。次に、レジスタを入力します。 Shift++

コマンドモードで貼り付けるには、 P、ただし、行に改行文字がないことを確認する必要があります(例:0v$hy)、それ以外の場合はカーソルの上に表示されます。

視覚モードについても同じです。 Vim SEで垂直選択ブロックに行を貼り付ける方法

2
kenorb

レジスタの内容を特定の(文字単位/行単位/ブロック単位)モードに「キャスト」する必要が頻繁にあったため、 nconditionalPasteプラグイン を作成しました。 gcpglpなど、特定のモードを強制する組み込みの貼り付けコマンドの代替手段を提供します(コンマで結合したりクエリしたりして貼り付けるなど、このテーマのバリエーションがさらに増えました)文字)。

これにより、テキストのヤンク方法に関係なく、gcp/gcPを使用してカーソル位置の前後に貼り付けることができます。

1
Ingo Karkat

Dを使用して、現在のカーソル位置から行末までを削除し、pを新しいカーソル位置まで削除できます。

つまり、^ Dとpを使用して行全体をカットアンドペーストします。

1
vvv

Shift + v 行全体を選択しますが、それは望ましくありません。代わりに、を押します CTRL + v 文字で選択する行の先頭から、 $ 行の最後まで選択します。ヤンク y そして貼り付け p

0
leedre

(私はこのスレッドが古いことを知っています、これを残して、これが誰かを助けることを願っています)

上記の@wbgのラインフィードの削除に関するコメントに触発され、これらをマッピングに追加しました。

nnoremap <leader>p :let @"=substitute(@", '\n\+$', '', '')<CR>p

inoremap <leader>p <esc>:let @"=substitute(@", '\n\+$', '', '')<CR>pa

これは、いくつかのSQLを含むファイル(行ごと)があり、コードにヤンクする必要がある場合に便利です。

0
Sunny Pun
  1. 挿入したい場所で行を2に分割します

  2. それらの間にセクションを貼り付けます

  3. ここで説明されているように、3行をjにマージします( Vimで改行を削除

動作しますが、退屈で、考えなければなりませんでした、調べてください=> viとemacsはごみソフトウェアです

0
foobariciuos

あるかどうかはわかりません。私はドキュメントを見つけようとして、次の3つのドキュメントを見つけました。

残念ながら、3つすべてには、リストした2つのコマンドしかありません。特に、3番目のリンクはThe commands to paste are p and P...

0
Jeremy Wiggins