「vimの置換でスラッシュをエスケープせずに置換する方法」の版間の差分

提供: neovim/vim入門
移動: 案内検索
(ページの作成:「vimの置換は、 :s/pattern/string/options を使って行います。デミリタをスラッシュにしてしまうと、string の部分にスラッシュを使...」)
(相違点なし)

2017年6月13日 (火) 00:02時点における版

vimの置換は、 :s/pattern/string/options を使って行います。デミリタをスラッシュにしてしまうと、string の部分にスラッシュを使用する場合には、バックスラッシュによるエスケープ処理が必要になります。デミリタを変更することで、バックスラッシュによるエスケープなしに、置換ができるようになります。

読み方

pattern
ぱたーん

概要

vimの置換は、 :s/pattern/string/options を使って行います。デミリタをスラッシュにしてしまうと、string の部分にスラッシュを使用する場合には、バックスラッシュによるエスケープ処理が必要になります。

エスケープ処理が入ると、可読性が著しく悪くなります。

:s/foo/https:\/\/foo.com\//

どこまでが 置き換え後の文字列なのか、デミリタの記号なのかが、よく考えないとわからなくなってしまいます。

vimの置換のデミリタは、スラッシュを使わなければならないのではなく、ほかの記号でも代替可能です。

利用できるデミリタの例は、 vimの置換のデミリタはスラッシュ以外も利用できる をご参照下さい。

スラッシュ以外のデミリタを利用する

デミリタとして、スラッシュ以外を使う利点ですが、スラッシュをエスケープせずにパターンや置換後のテキストに使えることではないでしょうか。 パターンや置換後のテキストの指定に、スラッシュを使いたいときに、デミリタにスラッシュを使っている場合、バックスラッシュでスラッシュをエスケープしなければなりません。

スラッシュをエスケープしはじめると、コマンドが読みにくくなってしまい、なにがなんだかわからなくなってしまう方もいるのではないでしょうか?

:s/foo/https:\/\/foo.com\//

デミリタをシャープ(#)に変えてみるとスッキリした形になります。

:s#foo#https://foo.com/#

非常に読みやすくなったのではないでしょうか?

まとめ

  • 置換のデミリタはいろいろな記号が利用できる
  • 置換のデミリタを変えれば、パターンや置換後の文字列に含める記号のエスケープ処理を省略できる

関連項目