Vimで検索/置換を行う場合、正規表現を使用する必要はほとんどないので、常にすべてをエスケープするのは苦痛です。正規表現を使用しないようにデフォルトにする方法はありますか、またはこれを達成するための代替コマンドはありますか?
例として、<
を<
に置き換えたい場合は、s/</</g
の代わりにs/\</\<\;/g
と入力したいだけです。
:sコマンドには、マジックを無効にするか強制するショートカットがあります。マジックをオフにするには、次のように%sno
を使用します。
:%sno/search_string/replace_string/g
ここにあります: http://vim.wikia.com/wiki/Simplifying_regular_expressions_using_magic_and_no-magic
この問題は主に、置換文字列内の&
の役割に関する混乱が原因で発生します。置換文字列はnot reg-exですが、&
などの特殊文字がいくつかあります。 &
の役割については、置換文字列:h sub-replace-special
を参照してください。
OPの主な問題は、余分なバックスラッシュを入力することではなく、バックスラッシュが必要な場合と不要な場合を覚えていることだと思います。 1つの回避策は、不明な場合に「置換式」の使用を開始することです。 (:h sub-replace-expression
を参照してください。)これには、置換文字列に「\ =」を入れる必要がありますが、文字列リテラルを一重引用符で囲むと置換文字列が得られるため、置換する文字列をより自然に制御できる場合があります。あなたが欲しい。たとえば、この置換はOPが望むことを行います:
:s/</\='<'/g
このオプションを使用してください:
set nomagic
見る :help /magic
文字通り検索したい場合は、\V
正規表現アトム。これは、バックスラッシュをエスケープする必要があることを除いて、ほとんどあなたが望むことを行います。文字どおりに検索する独自の検索コマンドを定義できます。このようなもの:
:com! -nargs=1 Search :let @/='\V'.escape(<q-args>, '\/')| normal! n
次に、:Search/foobar/bazを使用します
Substituteの場合、:Searchコマンドの後に単純に使用できます
:%s//replace/g
それ以来、Vimは暗黙的に最後の検索項目を取得し、置換にを使用します。
(あなたにいくつかのアイデアを与えたいだけです)