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

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


15
行を数えずにテキストの大きなブロックを削除するにはどうすればよいですか?
vimでは、大きなテキストブロックを削除するか、ヤンク/プットする必要があります。 テキストの行を数えて、50dd50行を削除するようなものを入力できます。 しかし、それは少し苦痛です。事前に削除する行数を知らなくても、この大きなテキストブロックを削除するにはどうすればよいですか?

3
カーソルが置かれている単一の文字をヤンク(コピー)するにはどうすればよいですか?
私は物をコピーする多くの方法を知っています: yiw=現在の単語の yawヤンク=すべての単語をヤンク(末尾のスペースを含む) yy =現在の行を 3yyヤンク= 現在の行で始まる3行をヤンク yap=すべての段落をヤンク(末尾の改行を含む) 単一の文字を削除または変更することもできます。 x=カーソルの下の文字を削除する=カーソルの下の文字を r置き換える しかし、どのようにカーソルの下にある単一の文字を単純にコピーしますか? 私の動機は、Perl 6でプログラミングしていることと、一部の演算子がUnicode文字であるということです。現在、カスタムパーサーの開始点としてtadzikのPerl 6 Config :: INIコードを使用していますが、この行からそのフランス語の引用文字(ハイパーオペレーター)を1つだけコピーしたいと思います。 my %hash = $<sections>».ast; 2文字の "Texas"バージョンのhyper operatorを使用できます>>が、私はそれ>»が以下よりも良く見え、曖昧さが少ないと思いました>>>。 my %hash = $<sections>>>.ast;



5
レジスタをクリアせずに特定の操作を実行する
多くの場合、構成ファイルで行のブロックをコピーして貼り付けてから、そのブロックに小さな変更を加えます。貼り付けた後、x削除する文字を削除してから、次のブロックを貼り付けます。を除きx、削除された文字をクリップボードに置くので、行ブロックを再度コピーする必要があります。 挿入モードに入らずにこれを行う方法はありますか?

2
なぜYはy $ではなくyyの同義語なのですか?
これには特定の歴史的理由がありますか? 背景 —(質問を既に理解している場合は、この部分をスキップできます。) 中級/上級viユーザーが知っているようにy、 "yank"コマンドは次の移動コマンドで指定されたテキストをヤンク(コピー)します。* ye単語の最後までヤンクし、y0カーソル位置から行頭までヤンクしますy_現在の行全体をy$ヤンクし、カーソル位置から現在の行の最後までヤンクします。 d(削除)コマンドとc(変化する)コマンドが両方同様にこれらの動きのすべてで使用することができます。 ddは、d_現在の行全体の同義語であり、削除します。同様に、現在の行のcc同義語でc_あり、変更します(つまり、すべてのテキストを削除し、行の先頭で挿入モードにします)。** 「yank」コマンドはこの規則に従います。yyのように現在の行全体をヤンクしますy_。 同義語の別のセットがあります:Dは同義語でd$あり、カーソル位置から行末までを削除します。 Cは同義語でc$あり、カーソル位置から行末までテキストを変更し、挿入モードにして新しいテキストを入力します。 しかし、Yある別の同義語yyかy_とヤンクます全体のラインをあなたから期待通りだけでなく、カーソルから行末までCとDパターン。 Vimの下位互換性を維持するためにVimでこのように保持されていることを理解していviます:help Y。 「Y」をカーソルから行末まで(より論理的ですが、Vi互換ではない)動作させたい場合は、「:map Y y $」を使用します。 だから、これはからのホールドオーバーですvi。いいよ しかし、そもそもコマンドがそのように設計されたのはなぜですか?これまでに何か論理はありましたか? *具体的には、レジスタ0にテキストを配置し、名前のないレジスタをレジスタ0に向けます。 **これSは私の質問には関係ありませんが、ccまたはの別の同義語ですc_。


4
通常モードで単語をヤンクされた単語に置き換える方法
単語を以前にヤンクした別の単語に置き換える必要があるとき、私は通常、私にとって不自然なワークフローを使用します。 このテキストがあるとしましょう: foo bar buzz そして、私はヤンクfooしてbar、以前にヤンクしたものに置き換えたいと思います。 ヤンクした後foo、次のオプションが表示されます。 オプション1 カーソルを合わせbar持ちますw 入れfoo目の前にbarしてP b残りのにカーソルを合わせてbar、単語を削除しますde オプション2 カーソルをバーに置く w de消去に使用bar レジスタ0の内容を入れて"0P(私は消去するのでbar、fooシンプルにもうアクセスできませんp) どちらの方法も私には複雑すぎるようで、このアクションを達成するためのより効率的な方法があると確信していますが、その方法を見つけることはできません。このアイデアは、deleteアクションとputアクションを1つだけにまとめるか、少なくとも削除した単語をyankレジスタに保持することを避けて、必要な単語をsimpleで挿入できるようにすることpです。 また、私はトリガーされRた置換モードを知っていますが、ヤンクされたものを置くことはできません。 TL; DR:単語をヤンクレジスタの内容に置き換える方法は?

7
テキストブロックをより高速に移動する方法
テキストまたはコードのブロックを通常コピーする方法は次のとおりです。 ビジュアルモード(V)でブロックを選択し、d;で削除し ます。または、1行だけの場合は、を使用します dd。 私はテキストになりたい場所に移動し、私は違いを覚えて、あまりにも愚かだpとP、私は時間の約50%、この権利を取得するので、。(間違った場合は、もう一度やり直してください)。 場合によっては、インデントの調整が必要なため、Vもう一度ビジュアルモードに移動し て同じブロックを再選択し、>または <を使用して修正します。 もっと簡単な方法はありますか?一部のエディターでは、テキストブロックをそのまま「ピックアップ」し、移動できることがわかりました。Emacsの例を次に示します(ただし、他のエディターでも見ました)。 それとも別の(さらに良い)方法がありますか?

2
vimのクリップボードレジスタにどのように追加しますか?
以下を使用して、何かをレジスタにコピーできることをすでに知っています:(さらにヤンク、削除などのコマンド) "a また、次のものを使用してレジスタに追加できることも理解しています。 "A さらに、以下を使用してクリップボードレジスタに何かをコピーする方法を理解しています。 "+ クリップボードレジスタに追加するには、何を入力しますか? 私のvimバージョン: VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan 2 2014 19:39:59) Huge version with GTK2 GUI.

1
d [count] dをマップするにはどうすればよいですか?
NBこれは、「d3fg」コマンドがどのように機能するかを複製したものではありませんか?投票する前に読んでください! 小さな削除を大きな削除のようにしようとする私の探求で少し行き詰まりになりました。私が持っている問題は、のようなコマンドを再マップする方法を理解できないことd3dです。実際、そもそもそれらがどのように機能するかを理解することも、Vimのヘルプでそれらの言及を見つけることもできません。 d3j簡単です:dオペレータを3jモーションに適用します。 3ddまた、簡単ddです。3の「カウント」でコマンドを実行します。 d3d それは簡単なように見えますが、d演算子を...に適用しますが、何3dですか?それは動きではありません。自分で入力3dした場合、Vimはそれをカウントの後に演算子が続くものとして扱い、それ以上の入力を辛抱強く待ちます。 また、演算子を他の演算子に適用することはできません。ddヘルプでは、2つの演算子のシーケンスとして説明されていません。これは、独立した2キーストロークコマンドです。(cf. dc、何もしません。) また、2つのキーストロークを必要とするコマンドの場合、カウントの配置が柔軟であるということはないようです:2gjカーソルを2画面行下に移動しますがg2j、最初の2キーを完全に破棄し、カーソルを1行下に移動します。 それでは、どのように機能しますか?これはVimの内部コードの特殊なケースですか?d[count]dマッピングを作成する方法はありますか? 編集:それはテキストオブジェクトですか?:h text-objects「テキストオブジェクト選択コマンド」のリストには含まれませんが、「小さなオブジェクトから大きなオブジェクトにグループ化された」削除のリストにはdd が含まれます。そしてd2aw、カーソルの下の単語と次の単語を削除します。一方、c2d何もしません。 *それらについての言及が存在するに違いないと確信していますが、見つけることができません。私が読んだ:help deleting、:help motion.txtと試してみました:helpgrep dNd1-9からのNの全ての値のために。

4
内側のテキストをヤンクしたテキストに置き換える方法
私がよく遭遇する編集パターンは次のとおりです。引用符または括弧内のテキストをヤンクし、引用符/括弧の別のペア内のテキストを置換したい。 たとえば、クラス名をコピーしてfoo bar別の場所に貼り付ける場合: <span class="foo bar"> <div class="this-should-be-replaced-with-foo-and-bar"> 私が知っているのはこれです:スパンのクラス内を移動する場合yi"、引用内のテキストをヤンクするために使用します。 今、私はこれをレジスタに持っているので、divのクラスの内容をそれで置き換えることができるはずです。しかし、私はこれを行う便利な方法を見つけることができません。 これを使用するciwと、変更する内容でレジスタが上書きされるため、ヤンクしたテキストが失われます。 私が思いつくことができる最高のことは、divのクラスの最初の引用に移動しp、を押してから、で次の引用に削除することdt"です。 通常、私は自分の立場を台無しにし、引用符の中のどこかにそれを貼り付けて2つの文字列をマージし、それは物事を台無しにしている。 これを簡単にするために、「内側のテキストをヤンクしたコンテンツに置き換えてください」の組み合わせを行う方法があることを望んでいます。

1
「dap」はすべてを削除しますか?
「dd」および「d {motion}」コマンドについてはよく知っていますが、vimのhelp.txtに「dap」が見つかりません。「dap」は通常モードで何をしますか、またその理由は何ですか?(あるいは、自分でこの種のことをどのようにして見つけることができますか?)

4
文字xのn番目の出現までカーソルから削除します
私はまでカーソルから削除して、文字の最初の出現を含むことができることを知って、Xとd/x<CR>かとv/x<CR>d、私は最初の選択を参照して、削除したい場合に。現在のカーソル位置からxのn番目の出現まで削除するにはどうすればよいですか? たとえば、カーソルが最初のスペースの後にある場合 ヤダヤダヤダヤダヤダヤダ x ヤダヤダヤダx ヤダヤダヤダx xx そして、私は3分の1にまで削除するコマンドを入力し、Xする結果のニーズを: 矢田の XX

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