:%s/<search_string>/<replace_string>/g
ファイル全体で文字列を:s/<search_string>/<replace_string>/
置き換えるか、現在の行で置き換えることができます。
vimで選択行から単語を選択して置換するにはどうすればよいですか?
例:から6-10
では14-18
なく、行からのテキストを置き換えます11-13
。
:%s/<search_string>/<replace_string>/g
ファイル全体で文字列を:s/<search_string>/<replace_string>/
置き換えるか、現在の行で置き換えることができます。
vimで選択行から単語を選択して置換するにはどうすればよいですか?
例:から6-10
では14-18
なく、行からのテキストを置き換えます11-13
。
回答:
この:&&
コマンドは、同じフラグを使用して最後の置換を繰り返します。あなたはそれに追加の範囲を提供することができます(そして好きなだけ連結することができます):
:6,10s/<search_string>/<replace_string>/g | 14,18&&
ただし、範囲が多い場合は、ループを使用します。
:for range in split('6,10 14,18')| exe range 's/<search_string>/<replace_string>/g' | endfor
:6,10s/<search_string>/<replace_string>/g | :14,18&& | :20,23&& | :28,31&&
も機能し、for
ループにより覚えやすく、実行しやすくなります。
:
あなたには、いくつかのより多くのキーストロークを保存することができますので、後続のコマンドでは、ところで、オプションです。
:&&
毎週何百ものキーストロークを節約できます。ありがとう!
すべて置換:
:%s/foo/bar/g
(すべての行で) 'foo'の各オカレンスを見つけ、それを 'bar'に置き換えます。
特定の行の場合:
:6,10s/foo/bar/g
6行目から10行目までのすべての行について、各「foo」を「bar」に変更します。
/
、操作のフラグを示す場所です。このコマンドは通常、行の最初の一致を置き換えます。g
フラグそれはすべての出現を置き換えます。
%
事は仕事をしません!それ以外の場合は、最初の発生のみです。
%
=>すべての行でこのコマンドを実行します。g
=>同じ行の複数の出現に一致します。
補足として、行番号を入力する代わりに、いずれかのビジュアルモードで検索/置換する行を強調表示するだけです。
VISUAL
モード(V)VISUAL BLOCK
モード(Ctrl+ V)VISUAL LINE
モード(Shift+ V、あなたの場合に最適)置き換える行を選択したら、次のコマンドを入力します。
:s/<search_string>/<replace_string>/g
範囲'<,'>
が自動的に挿入されることに注意してください:
:'<,'>s/<search_string>/<replace_string>/g
ここでは'<
単に最初に強調表示された行を'>
意味し、最後に強調表示された行を意味します。
NORMAL
モードでは予期しない動作になる可能性があることに注意してください。'<
また'>
、いずれかのVISUAL
モードで行われた最後のハイライトの開始と終了をポイントします。代わりに、NORMAL
モードでは特別な行番号.
を使用できます。これは単に現在の行を意味します。したがって、次のように現在の行でのみ検索/置換できます。
:.s/<search_string>/<replace_string>/g
もう1つ注意すべき点は:
、範囲と検索/置換コマンドの間に秒を挿入しても害はありません。つまり、これらのコマンドは引き続き機能します。
:'<,'>:s/<search_string>/<replace_string>/g
:.:s/<search_string>/<replace_string>/g
あなたは2つの検索/置換シーケンスでそれを行うことができます
:6,10s/<search_string>/<replace_string>/g
:14,18s/<search_string>/<replace_string>/g
2回目に調整する必要があるのは範囲だけなので、すべて入力する代わりに、最後のコマンドを呼び出して範囲だけを編集します
vimで影響を受けるすべての行が混乱している場合は、以下を使用してください
:%s/foo/bar/gc
それぞれの「foo」を「bar」に変更しますが、最初に確認を求めます。はいの場合は「y」を、いいえの場合は「n」を押します。その後に保存することを忘れないでください
:wq
c
範囲を指定することに加えて、実際にフラグを使用できるため、:6,10s/<search_string>/<replace_string>/c
機能します。c
の略ですconfirm
。c
フラグが頻繁に使用されているのは、そこに存在するとは思わなかった単語を誤って置き換えてしまうのを防ぐためです。
VI検索と置換コマンドの例
「foo」という単語を見つけて、「bar」に置き換えたいとします。
最初のヒット[Esc]
キー
タイプ:(コロン)の後に%s/foo/bar/
[Enter]キーを押します
:%s/foo/bar/
:%s/<search_string>/<replace_string>/g
コマンドでは、ファイル全体のすべての出現を置き換えます。質問への正確な答えではありませんが、それでも有用です:)
視覚的な選択で範囲を指定することは問題ありませんが、オペレーターが選択できる数行にわたる非常に単純な操作がある場合、これらのコマンドをオペレーターとして適用するのが最善です。
残念ながら、これは標準のvimコマンドでは実行できません。!を使用して、一種の回避策を実行できます。(フィルター)演算子と任意のテキストオブジェクト。たとえば、操作を段落に適用するには、次のようにします。
!ip
これは、「演算子を!段落内に適用する」と読む必要があります。フィルターオペレーターはコマンドモードを開始し、行の範囲の後にリテラル「!」を続けて自動的に挿入します 直後に削除できます。これを適用する場合は、次の段落に:
1
2 Repellendus qui velit vel ullam!
3 ipsam sint modi! velit ipsam sint
4 modi! Debitis dolorum distinctio
5 mollitia vel ullam! Repellendus qui
6 Debitis dolorum distinctio mollitia
7 vel ullam! ipsam
8
9 More text around here
「!ap」を押した後の結果は次のようになります。
:.,.+5
「。」として (ポイント)は現在の行を意味し、現在の行と5行後の範囲が操作に使用されます。これで、以前と同じ方法で代替コマンドを追加できます。
悪い点は、演算子を後で適用するためにテキストを選択するよりも簡単ではないことです。良い点は、これが他の同様のテキスト範囲(この場合は段落)の範囲の挿入を視覚的に異なるサイズで繰り返すことができることです。つまり、後で範囲の大きい段落「。」を選択する場合。それは正しいでしょう。
また、セマンティックテキストオブジェクトを使用して操作の範囲を選択するという考えが好きな場合は、同じことをより簡単に実行できるプラグインEXtend.vimを確認 できます。
この質問に答えるには:
:40,50s/foo/bar/g
40行目から50行目までの行で、これらの行のfooをbarに置き換えます。このコマンドを実行すると、現在任意の行に配置できます。
:50,40s/foo/bar/g
また、vimは確認を求め、最初のコマンドを入力した場合と同じように置き換えを行います。
:,50s/foo/bar/g
現在いる行と50行目(両端を含む)の間のこれらの行で、fooをbarに置き換えます。(50行目以降の行にいる場合、vimは再度確認を求めます)
vimとEclipseのvrapperプラグインの違いを明確にするために:
varpperでは
:,50s/foo/bar/g
コマンドは機能しません。
:50,40s/foo/bar/g
確認を求めずに動作します。
(Vrapperバージョン0.74.0以前の場合)。
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
上記を他の情報で置き換えたいとしましょう。
COMMAND(:%s/\/sys\/sim\/source\/gm\/kg\/jl\/ls\/owow\/lsal/sys.pkg.mpu.umc.kdk./g)
この場合、上記は(sys.pkg.mpu.umc.kdk.
)に置き換えられます。
%s
入力を変更する方法をすでに知っていますが、「セミグローバル」に行う方法を知りたいようです(つまり、彼の仕様は6-10行目と14-18行目ですが、11行目ではありません- 13)。
/
、例えば!
、@
、_
::%s_/sys/sim/source/gm/kg/jl/ls/owow/lsal_sys.pkg.mpu.umc.kdk_g