タグ付けされた質問 「cut-copy-paste」

テキストの切り取り、コピー、貼り付けに関する質問。Vimでは、「カット」は「削除」とも呼ばれ、「コピー」は「ヤンク」とも呼ばれ、「ペースト」は「プット」とも呼ばれます。

3
netrwでファイルをコピーするにはどうすればよいですか?
現在の作業ディレクトリは./A/B/です。を入力すると空のドキュメントが開き、vimコマンドでnetrwが開き:e.ます。ウィンドウはで分割されvs.、上位レベルのディレクトリ、つまりに移動でき./A/ます。次に、a_file.jpgから./A/B/にファイルをコピーしたいと思います./A/。 yyターゲットファイルとpターゲットウィンドウ(ディレクトリ)で試しましたが、目標を達成できませんでした。 追加のプラグインをインストールせずに目標を達成できる方法はありますか?

3
Vimで貼り付けたばかりのテキストブロックを視覚的に選択するにはどうすればよいですか?
通常、ソースファイル間でコードスニペットを移動/コピーする必要があります。テキストのブロックを貼り付けた後、通常、ブロックを再インデントするなど、何らかの操作をそのブロックに適用する必要があります=。 貼り付けたテキストブロックを手動で簡単に視覚的に選択する方法はありますか?

4
インクリメントしながらヤンクアンドペースト
Vimで.sqlファイルを編集しています: INSERT INTO apps_forms (app_id, form_id) VALUES (1, 1), 私がやろうとしているのは、(1, 1),行をヤンクして137回貼り付けることです。ただし、カッコ内の2番目の数値は、毎回インクリメントされるようにします。出力は次のようになります。 INSERT INTO apps_forms (app_id, form_id) VALUES (1, 1), (1, 2), (1, 3), ... (1, 137), Vimでそれを行う方法はありますか?その場合、どのコマンドを使用しますか? ありがとう!

1
なぜpは現在の単語の後ではなく、現在の行の後にコピーされた行を貼り付けたのですか?
次の4行があるとします。 line1 line2 line3 line4 私はに行けば今line1とやるyyどのコピーラインをしてからの起動に行くline3と「p」を使用してペーストを行う、私はなるだろう ... line3 line1 line4 .... なぜ新しい行に貼り付けline1たのline3ですか? 私の初期は、改行文字$がline3に付加されていて、pvim を押したときにvim line3$が1つの単語と見なされたため、後に貼り付けられたためline3$です。しかし、私の理解は間違っていたようです。私がこれline3 $をpしてから行の先頭でをやると同じ結果が得られるからです。 なぜp新しい行を作成してから新しい行に貼り付けるのline3ですか?

2
カーソルから最初の文字x(複数行にわたる)まで削除します
を使用して、文字xが最初に現れるまでカーソルから削除できることを知っていますdfx。これは1行でのみ機能します。どのように私は、最初の出現まで、現在のカーソル位置から削除することができ、X際、xは同じ行にはないのですか? たとえば、カーソルが最初のスペースの後にある場合 やだやだやだやだやだ やだやだxやだやだやだx dfx結果を入力する必要があります: やだ

3
WSL上のVim:システムクリップボードを同期しますか?(クリップボードを設定^ =名前なし)?
WSL / Bash for Windowsを使用y yy 3yしpているときに、vimで常に使用できるようにしたいのですが、vimの内部クリップボードではなく、すべてのアプリで共有されているシステムクリップボードに接続しています...すでにクリップボードを管理することに同意しています歴史。 Vimには、コピー/貼り付けバッファーをシステムクリップボードと同期する組み込みオプションがあるようです...しかし、WSLを実行するときの問題は、実際に使用/mnt/c/Windows/System32/clip.exeしてクリップボードにアクセスする必要があるということです...使用できるように: set clipboard^=unnamed WSLはまだサポートされていないようです。 私はneovimがこれをオプションとして持っていることを理解していますが、今は本当にneovimで実験したくありません... 今のところ、私が見つけた回避策に最も近いものは次のとおりです。 nnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR> vnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR> しかし、これは私の考えでは本当に恐ろしい解決策です... 2つのステップのプロセスをコピーすることになります... もちろん、マウス/シフト+インを使用してコピーと貼り付けを行うこともできますが、この同期をVimで正しく機能させる方法が必要だと思います。

3
vimにわずかな違いがある繰り返しのテキストを挿入する方法は?
このようなテキストを挿入したい: similar text wordA similar text ... similar text wordB similar text ... similar text wordC similar text ... テキストを何度も貼り付けてから、置換を使用して各行の1つの単語を変更できることはわかっていますが、この方法は依然として非常に不便です。 単語または単語リストを「変数」に保存し、この変数を使用して同様のテキストを生成する方法はありますか? 編集私は元の質問で何かを不明確にしました、実際私はいくつかの非常によく似た関数定義を作ろうとしているので、wordA wordB...はテキストの各クローンに何度も現れ、テキストには多くの行が含まれる場合があります。パターンは次のとおりです。 similar_text1 wordA similar_text2 wordA similar_text3 ... similar_text1 wordB similar_text2 wordB similar_text3 ... similar_text1 wordC similar_text2 wordC similar_text3 ... (テキストには改行が含まれている可能性があり、wordA、wordB ...は何度も存在する可能性があります) 2番目の編集 "similar_text"の部分は、そのような仕事をするたびに異なる可能性があるため、この仕事の解決策は再利用可能である方がよいでしょう。私は非常によく似た関数定義、または文字列から関数へのマッピングテーブルを作成しようとしているためです。 回答といくつかの練習を読んだ後、改行を含む可能性のある別々の「part1」、「part2」...「partN」を書くのは難しいので、この仕事をある種の置換と考える方が便利だと思います。まずテンプレート: similar_text1 $WORD similar_text2 $WORD …

6
Vimで削除してから改行せずに貼り付ける
vimでは何度も行を完全に削除したいので、ddを使用します。ただし、その行を行内の別の位置に貼り付ける必要がありますが、これにより貼り付け前に改行が挿入されるため、目的の結果を得ることが非常に難しくなります。例えば、 while( pasteInHere ) { cin >> n; // Delete this line completely with dd } 上記のコードでこれを行うと、次のようになります。 while( pasteInHere ) cin >> n; // Delete this line completely with dd { } 希望する結果とはかけ離れています...この改行の動作を抑制する方法、または非常に効率的な別の方法を使用する方法はありますか。行頭に行かなければならないのでd $は良いとは思いませんが、空の行も削除したい場合は、別のレジスターで削除する必要があるので、もっと簡単な方法があるはずです!ありがとう。

5
端末間でコピーする方法は?
Linuxシステムを使用しています。2つのvimが2つのターミナルで開かれます。次に、AからBにテキストをコピーします。そのための1つの方法は、Aでテキストを選択し、マウスを使用してコピーしてからBに切り替え、挿入モードでコマンド<c-r>+を使用してテキストを貼り付けることです。 とにかくマウスを使わずに実行することはありますか?"+yyAのように、Bに切り替えると、o<c-r>+?私はいくつかの組み合わせを無駄に探索しました。そして、「端末間でコピー」を検索しましたが、何も見つかりませんでした。 ユーザ@statox、すなわち、ビジュアルモードを使用して、一つの解決策を提案しv$"+y、A、Bにスイッチにo<c-r>+。 vモードに入らずにAのテキストをコピーできる簡単な方法はありますか?確かにvモードに入るのにあまり多くのキーストライクは必要ありません。もっと良い方法があるかどうか疑問に思います。例えば。カーソルが行の中央にある場合、行yy全体を(registerに")コピーしますが、0v$y追加のキーストロークで同じことを行います。 それとも、私の質問は、より少ないキーストロークでどのような方法がある場合に減少させることができる0v$"+yためコピー私が使用できるように<alt-tab>o<c-r>+貼り付けます。

2
別の行で始まるビジュアルブロックを貼り付ける方法
ビジュアルブロックで何かを(貼り付けて)貼り付ける、pまたはPでビジュアルブロックを選択しctrl+vてヤンク(コピー)するとy、以前の方法が維持されるため、コピーされたテキストが行の途中にあるときに、その後、可能な限り他のテキストの中間にコピーされます。逆に、select-line with Vは、コピーされた行を他のテキストに貼り付けず、別の行から開始します。 たとえば、私が今持っていると仮定します: 12/12: Avocado. Apple. 12/13: Bean. Banana. 12/14: Cherry. Citron. 12/15: 12/16: 12/17: 私はカットしたいときAvocadoやBean、およびCherry、(のように表さ選択を選択することで_) 12/12: ________ Apple. 12/13: ________ Banana. 12/14: ________ Citron. 12/15: 12/16: 12/17: を押しy、カーソルを次の行に移動します(カーソルはとして表されます_)、 12/12: Avocado. Apple. 12/13: Bean. Banana. 12/14: Cherry. Citron. _2/15: 12/16: 12/17: を押しPます。その結果: 12/12: Avocado. Apple. 12/13: Bean. Banana. 12/14: …


3
テキストを1つのレジスタから任意の数のレジスタに移動するにはどうすればよいですか?
レジスタから別のレジスタまたはレジスタセットにテキストを「パイプ」する方法はありますか?例えば、移動"qレジスタに"1スルー"5。 同じマクロのわずかに異なるバージョンを作成したいことがよくあるので、「テンプレート」マクロを複数のレジスタにコピーして、それぞれを適切に変更できると便利です。 実用的な例を示すために、ここで私にこの質問を促した問題があります。 次の行をハードウェア記述言語から多くの繰り返しブロックに変換する必要があります。 RAM64(in=in, load=load0, address=address[0..5], out=out1); に RAM64(in=in, load=load1, address=address[0..5], out=out2); RAM64(in=in, load=load2, address=address[0..5], out=out3); RAM64(in=in, load=load3, address=address[0..5], out=out4); RAM64(in=in, load=load4, address=address[0..5], out=out5); yypW^At)^Aregisterに保存したインクリメント関数を使用して、これを実行するマクロがあります"a。 時々、次のようにインクリメントのパターンが少し異なる必要があります RAM512(in=in, load=load1, address=address[0..8], out=out2); RAM512(in=in, load=load2, address=address[0..8], out=out4); RAM512(in=in, load=load3, address=address[0..8], out=out6); RAM512(in=in, load=load4, address=address[0..8], out=out8); ここで、レジスター内のマクロはに"bなりますyypW^At)^A^A。 レジスターでこれを行いたいのですが、1から5までの増分ごとに行います。レジスタ"aは(どういうわけか)レジスタbからeにコピーできます。次に、各レジスターをバッファーに貼り付け、必要な変更を加え(項を追加し、tモーションに従うキャラクターを変更し)、変更した式をヤンクしてレジスターに戻します。理想的には、この最後のステップをレジスタにコピーするコマンドに含めることもできます これにより、変更する必要のないマクロ内のすべての文字を繰り返す必要がなくなります。私の例では、それは些細なことかもしれませんが、私が求めていることを実行することが非常に役立つかもしれないときを予測することができます。

6
各行の最初の4文字を同じ行の終わりにコピーする方法は?
次のような一連の行があるとします。 2001 "Some Kind of Title," Author's Name, Publication Name, 1 Mar. 2002 "Some Kind of Title," Author's Name, Publication Name, 12 Oct. 2003 "Some Kind of Title," Author's Name, Publication Name, 8 Apr. 2004 "Some Kind of Title," Author's Name, Publication Name, 3 Jun. 最初の4文字(年)を取得し、行の最後にコピーして、次のようにする方法はありますか。 2001 "Some Kind of …


2
バッファ全体を置き換える最も効率的な方法は?
現在、バッファ全体を他のテキスト(クリップボードなど)に置き換える2つの類似した方法があります。 方法1: すべての行を削除::%d。 テキストを貼り付け:("+Pまたは類似:):put+。 方法#2: すべての行を視覚的に選択しますggVG。 テキストを貼り付け:"+P。 しかし、私はそれを行うための1つのコマンドを発射する方法を見つけることができなかったようです。私が見つけた最も近いものは:changeコマンドです。しかし、それはレジスターではうまく機能しないようです。もちろん、関数を作成したり、そのためのキーをマップしたりできます。しかし、これらすべてのカスタマイズを行う前に、以下を確認したいと思います。 ある範囲の行を他のテキストで置き換える組み込みコマンドはありますか?同様に、:%replace+バッファ全体をクリップボードのテキストに置き換えることができますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.