GNU/Linux >> Linux の 問題 >  >> Linux

Vimでテキストを見つけて置き換える方法

Vimでテキストをどのように検索しますか?

/キーを押し、検索テキストを入力して、Enterキーを押します。これはlessコマンドと同じです。

ただし、このテキスト検索方法では、検索結果を置き換えることはできません。

Vimで見つけて置き換える方法を共有しましょう 。

:%s/foo/bar/gci

上記のコマンドは、大文字と小文字を区別しない検索を実行して、新しい用語(bar)で検索用語(foo)のすべての出現箇所を検索します。フラグcを使用すると、置換を置き換える前に確認を求められます。

詳細を説明して、より明確に説明しましょう。

substituteコマンドを使用してVimのテキストを検索および置換する

Vimでコマンドを実行するには、通常モード(コマンドモードとも呼ばれます)である必要があることをすでにご存知だと思います。 Escキーを押して、このモードに入ります。

Vimには便利なコマンド:substitueがあります 、短いバージョンの:sでも使用できます 。

置換コマンドの一般的な構文は次のとおりです。

:[range]s/{pattern}/{string}/[flags] [count]

この構文を分解してみましょう。角かっこ「[]」の間はすべてオプションです。

  • range :構文のこの部分は、上記の行を置換する場合に使用できます。 範囲について言及しない場合、現在の行のテキストのみが置き換えられます 。 (範囲のテーブルを共有しました)
  • pattern :ここで、置き換えるテキストを指定します。
  • string :これはパターンを置き換える文字列です。
  • flags :検索パターンのすべての出現箇所を置き換えるには、gを使用します 国旗。大文字と小文字を区別しないようにするかどうかを指定できます。iを使用します 国旗。各検索および置換操作を手動で確認するには、cを使用します フラグ。
  • count :テキストを置き換える行数。
範囲 説明
現在の行
$ 最終行
すべての行
x 行番号x
。、+ x 現在の行から追加のx行まで

Vimでの検索と置換の例

Vimでのsubstituteコマンドの使用法を示すいくつかの例を見てみましょう。

以下は、Vimでのsubstituteコマンドの使用法を示すために使用するファイルのスクリーンショットです。

基本的なテキストの置換

この例では、文字列「Hello」が少なくとも1行に複数回、ファイルに複数回出現することを確認しました。

「Hello」を文字列「HI」に置き換えたい。以下はそれを行うためのVimコマンドです:

:%s/Hello/HI/g
確認で置き換えます

テキストを置き換えるが、実行するたびに確認が必要な場合は、cを使用できます。 代替コマンドで。

:%s/Hello/HI/gc

ビデオからわかるように、Vimはパターンを置き換える前に毎回確認を求めてきます。

次のようなプロンプトも表示されます:

replace with HI (y/n/a/q/l/^E/^Y)?

プロンプトのオプションには、次の意味があります。

  • y:はい
  • n:いいえ
  • a:すべて
  • q:置換せずに終了しますが、テキストを置換した後は元に戻されません
  • l:これを置き換えて終了します(「最後」と考えてください)
  • ^ E:上にスクロールします(vim-tinyでは機能しません )
  • ^ Y:下にスクロールします(vim-tinyでは機能しません )
大文字と小文字を区別しない置換

大文字か小文字かに関係なくテキストを置換したい場合は、その場合(笑)iを使用する必要があります 代替コマンドのフラグ。

:%s/hello/HI/gi

お気づきのように、「hello」または「Hello」、さらには「hELLO」のすべての出現箇所が「HI」に置き換えられます。これは大文字と小文字を区別しないパターン置換です。

ほとんどの「hello」には大文字の「H」が含まれていますが、すべての「hello」は「HI」に置き換えられます。

Vimでテキストを1行に置き換えます

1行のテキストを置換するには、置換の範囲を現在の行に制限する範囲を指定する必要があります。

そのためには、.を使用することをお勧めします。 範囲記述子。

:.s/Hello/HI/g

ご覧のとおり、ピリオド「。」を使用したため、最初の行のパターンのみが置換されました。範囲記述子。

ボーナスのヒント:別の区切り文字を使用する

置換コマンドの構文を見て、パターンと文字列がスラッシュ「/」で区切られていることを説明しました。

しかし、パスのように、パターン/文字列にスラッシュがたくさんあり、ファイル内のいたるところに繰り返されるテキストがある場合はどうでしょうか。スラッシュをエスケープするのは面倒で、見逃しやすい場合があります。

したがって、スラッシュ文字を区切り文字として使用する代わりに、別の区切り文字を使用できます。

私が使用しているのを見たいくつかの区切り文字は#です 、_ および@

これは、@の使用のデモンストレーションを示すgifです。 /の代わりに区切り文字として 。

結論

テキストの置換はよくあることですが、Vimでは、パターンを検索して文字列に置き換える強力な方法を紹介しています。 Vimの置換コマンドで正規表現を混在させることもできます。

Vimの基本以上のことを学びたい場合は、JovicaIlicによるこのプログラムを使用することを強くお勧めします。


Linux
  1. ディレクトリとサブディレクトリ内のファイル数を見つける方法

  2. find でディレクトリを除外する方法。指図

  3. Linuxコマンド:テキストファイルのみを「検索」する方法は?

  1. Linuxでsedを使用してテキストファイルを検索および置換する

  2. Windows 10にVim(vi)をインストールする方法

  3. vimエディターでコマンドを追加するには?

  1. LinuxでSed、ex、perlコマンドを使用してテキストを検索および置換する

  2. 検索コマンドの後にMvコマンドを統合する方法は?

  3. Linuxコマンドラインのすべてのファイルで単語のすべての出現箇所を置き換える方法