タグ付けされた質問 「replace」

テキストを上書きするコマンドまたはモード。検索と置換の操作には、[substitute]タグを使用します。

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:単語をヤンクレジスタの内容に置き換える方法は?

2
パターンを現在の行番号に置き換えます
このファイルの「x」を現在の行番号に置き換えたいと思います。つまり、変更 x x x に 1 2 3 今のところ、Perlのワンライナーを使用しています。 perl -pi -e '$x=$.; s/x/$x/' myfile.txt UltraEditは、垂直方向の選択と置換でそれができると思います。これをvimで実行できますか?(ここでの私の例では、 'x'が1行にすべてあると仮定しています。しかし、実際のファイルの行ははるかに複雑です。)

2
選択したテキストブロックのテキストを部分的に置き換える方法は?
私の問題にぴったりのタイトルを見つけるのは簡単ではありません。 私はテキストブロックの前に挿入することを知っています: Ctrl- v 線 種のテキストを選択しI ます ESC これを実行したいのですが、ブロック選択でパーツを交換することもできます。現在2つの操作を行っています Ctrl- v ブロックを選択 して最初に戻りますx 上記のシーケンスが続きます。 ブロックを1回だけ(Ctrl- v)選択してこれら2つの操作を組み合わせる方法はありますか? ここに小さな例があります: 次のブロックを変換したい 1 text 2 text 3 text 4 text 5 text に new text new text new text new text new text 「操作」は1つだけです。

3
挿入モードに入らずに複数の文字を置き換える方法
次のような行があるファイルがあります。 foofoo.xy.barbar 私が変更したいxyとしますgh。私が実行しようとしました2r> - ghが、それは置き換えとして、明らかにそれは、仕事をしませんでしたxyしgg、その後、左に私のカーソルの1スポットを移動しました。 挿入モードに入らず、または多くのキーストロークを使用せずにこれを行う方法はあり:s/xy/gh/ますか(例:)?

3
ハイライトされた文字列を選択的に変更するにはどうすればよいですか?
検索して、変更したい文字列をハイライトしました。ここで、強調表示されたテキストのみを置き換えたいと思います。n検索文字列の次のインスタンスに進むために使用しています。私は何かができると思っていましたがciw、ハイライトされたテキストだけでなく単語全体が変更されました。 私は精通して:%s/old/new/gいますが、すべてのインスタンスを変更したくありません。代わりに、カーソルを各インスタンスに進め、それを変更するかどうかを決定します。
11 search  replace 

3
検索でスラッシュをエスケープし、長い文字列を置き換える代替手段
文字列内のすべての特殊文字をエスケープする必要がある以外に、文字列のvim検索と置換に代替手段はありますか? たとえば、次の文字列を照合して何かに置き換えたい場合 [ERROR] Login unsucessful それから私はしなければなりません :%s/\[ERROR\]\ Login\ unsucessful/something/g そして、多くの特殊文字を含む複雑な文字列の場合、それはより醜く、苦痛になります 私は何かしたいです :%s/"[ERROR] Login unsucessful"/something/g すべての脱出を回避します。このような機能はありますか?

3
先頭の空白を決して含まない「」に似た動きはありますか?
私はa"vimでかなり頻繁にモーションを使用しています。たとえばca"、コードの一部をリファクタリングするときに使用して、ハードコードされた引数を変数名に置き換えます。このアプローチの問題a" は、末尾に空白がない場合、先頭の空白が含まれることです。 末尾の空白は含まれますが、空白がない場合は先頭の空白が含まれます。 したがって、次のように関数呼び出しを編集すると、 aFunction(arg1, "toBeReplaced", arg3) #original aFunction(arg1, replacedArg, arg3) #refactored 私は再挿入スペースの前に手動に持っているreplacedArgとしてca"、それが削除されます。 この空白を含まない同様のモーションはありますか、それとも代わりに使用できる何か他のca"スペースを入力する手間を省くことができますか? ノート: cf"文字列にエスケープされた引用符が含まれていない限り、私がやりたいことを行いますが、文字列の先頭にカーソルを置く必要があります。文字列内のどこからでも使えるものを使いたいのですが、入力するのが少し?"<Enter>cf"面倒です。 それは、単一の<Space>キーストロークではなく、最初にスペースを含めることを忘れがちで、少なくとも4回の追加のキーストローク(bi<Space><Esc>)がかかり、フォーカスを失うという事実についての詳細です。したがって、置換コマンドの長さは、指定された文字の間のテキストのみを削除してから挿入モードに入る限り、それほど重要ではありません。

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+バッファ全体をクリップボードのテキストに置き換えることができますか?

3
選択範囲または一致の各行に増分番号を挿入します
解決するための2つの一般的なアプローチについて考えることができる問題がありますが、どちらのアプローチの詳細かわかりません。 ... Level 1: cũng also Level 1: và and Level 1: như like; such as Level 2: các plural marker Level 2: của belonging to ... 「レベルn」で始まる各行に、「01」で始まる番号を挿入します。簡単にするために、数字を前に付けましょう。 アプローチ1:同じレベルのすべてのラインを手動で選択します。魔法を呼び出す私はすぐに学びます。 アプローチ2:すべての行が指定されたレベルに一致する検索と置換を記述します。これには、一致ごとに置換テキストに番号が含まれ、一致ごとに1ずつ増加します。 StackOverflowや他のVimサイトで同様の質問を見つけましたが、それぞれに次の問題が1つ以上あるようです。 任意の増加する番号ではなく、現在の行番号を挿入することです。 数字のゼロ詰めは行いません。 Windows 7で実行しているVim 7.4の選択では実際には機能しません(これらはエラーになりE481: No range allowedます)。 Windowsでmswin.vimを使用してgVimを実行していますが、セットアップをカスタマイズする必要なく、すべてのバニラVimインストールで機能するソリューションが最適です。
10 macro  replace 

5
選択を外部コマンドの出力で置き換えます
ファイルに次のようにXXXX選択したプレースホルダーを含む行があると仮定vします。 XXXX Some other text どうすれば変更できるだけXXXXのような、外部コマンドの出力でdate +%Y%m%d? 私は限りを得ました :'<,'>!date +\%Y\%m\%d しかし、それは行全体を置き換えました。

1
置換コマンドのプレビューを取得するにはどうすればよいですか?
かなりの頻度で、大きなファイル全体で一致がまばらになり、自明ではない検索式と置換式を使用する置換を実行する必要があることに気付きます。 たとえば、のような関数呼び出しがあるとしokFunction(arg1, arg2 arg3)ます。もちろん、引数は関数呼び出しごとに異なります。今、私は必要としないより良い機能を発見したと言いますarg2。ファイル全体を簡単に調整できます :%s/\<okFunction(\(\w\+\), \(\w\+\), \(\w\+\))/betterFunction(\1, \3)/gc 概念的には単純ですが、このかなり長いパターンで構文が正しいかどうかはわかりません。cフラグは本当にここに役立ちますが、問題は、確認を求めたとき、Vimはマッチが置き換えられますどのような表示されませんということです。つまり、置換式は表示されますが、評価結果は表示されません。で置換を確認するとy、vimはすぐに次の試合にジャンプし、間違いを犯したかどうかを確認することはできません。 問題を部分的に解決するvim-overプラグインを見つけましたが、コマンドを入力しているときに画面にすべてのマッチが表示されている場合のみです。Enterキーを押すと、動作は上記の説明とまったく同じになり、プレビューは表示されません。 それで、代替コマンドで確認を求めるときにvimに置換式を評価させる方法はありますか?

1
単一のキーストロークで、異なる選択に対して以前の置換を実行します
次のコマンドを実行しました :'<,'>s/2/digit/g 手動で視覚的に選択された以下のコード: return _.round(this.getTotalAbs(), 2).toFixed(2); そしてそれは意図したように機能しました return _.round(this.getTotalAbs(), digit).toFixed(digit); ここで、ビジュアル選択モードを介して手動で選択した別のコードスニペットに対して、1つのキーストローク(可能な場合)で同じ置換コマンドを繰り返したいと思います。

2
同じコード行をX回貼り付けますが、そのたびに行の1ワードを変更するにはどうすればよいですか?
私はHTMLリストを作成していて、10個のリストアイテムを自動的に貼り付けることができるようにしたいのですが、アイテムのテキストだけが変更されます。 PHPを使用してこれを実現し、レンダリングされたHTMLコードをコピーするだけで済みますが、そのステップをスキップしてVimから直接実行する方法があれば、時間を大幅に節約できます。

2
正規表現でネストされた一致するグループ
次の方法でpython式を変換するときの一般的な使用例があります。 value 1 value 2 value 3 に ['value 1', 'value 2', 'value 3'] 最も簡単な方法はマッピングを使用することですが、このタスクの代わりに使用したかったのです。 これまでのところ私は得ました: s/\(.*\n\)\+/[&]/g その結果 [value 1 value 2 value 3 ] この昇給私が一致することができるようにしたいので、質問、\(.*\)ではなく\n、使用する内部のマッチの結果'...'。 これを行う方法を知っていますか?

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