することができ、これは Vimの中で行うことができますか?
つまり、「BadJob」を検索して「GoodJob」で置き換えると、次のように置き換えられます。
'badjob' -> 'goodjob' 'BadJob' -> 'GoodJob' 'badJob' -> 'goodJob' 'BADJOB' -> 'GOODJOB'
することができ、これは Vimの中で行うことができますか?
つまり、「BadJob」を検索して「GoodJob」で置き換えると、次のように置き換えられます。
'badjob' -> 'goodjob' 'BadJob' -> 'GoodJob' 'badJob' -> 'goodJob' 'BADJOB' -> 'GOODJOB'
回答:
abolish.vimを使用します。
:%S/badjob/goodjob/g
BadJob
をに置き換えたい場合、GoodJob
使用できません%S/badjob/goodjob/g
。一致を検出できません。
%S/BadJob/GoodJob/g
。それから、Subvertコマンドは大文字小文字混合モードに切り替わり、OPで指定されたすべての置換を実行します。
これがあなたが探している種類の解決策であるかどうかわかりません...しかし、私はこれを使用しました: keepcase.vim
それ以外の場合、vimでのサポートはありません...
確かにできます
:s/\cbad/\= strpart(submatch(0), 0 ,1) == toupper(strpart(submatch(0), 0, 1)) ? "GOOD" : "good"/
ps。私はkeepcase.vimがいくつかの同様のロジックをカプセル化していると思います:)
これを貼り付けて調整することができます:(
もちろん、これを時々行う場合は、この怪物ではなくプラグインが必要になります。しかし、急いでいて一度だけ必要な人のために、これは簡単なハックですあなたの貼り付けの喜びのために:)
:%s/\cbad\zejob/\= ( submatch(0)[0] is# toupper(submatch(0)[0]) ? 'G' : 'g' ) . ( submatch(0)[1] is# toupper(submatch(0)[1]) ? 'OOD' : 'ood' )
検索パターンとは別に、置換コードの4つの'
文字列を編集する必要があり'
ます。太字の部分を編集します。
:%s / \ c bad \ ze job / \ =
(submatch(0)[0] is#toupper(submatch(0)[0])? ' G ': ' g ')。
(submatch(0)[1] is#toupper(submatch(0)[1])? ' OOD ': ' ood ')
この「オレンジ」バージョンを貼り付けに使用しないでください。改行文字もコマンドを破壊するためです。
/\ze
ポジティブな先読みをマークするためのvim正規表現構文糖:後のパターン \ze
がチェックされますが、置換されません。
is#
?? 説明させてください…(もし興味があれば)
#
(また、中==#
及び他の)大文字と小文字の区別を強制。それ以外の場合、:set ignorecase
(私が使用するので、これは便利に必要なので:set smartcase
)、vimは考慮します'a' == 'A'
!!
クレイジーであるので、実際に説明する必要があります。これはユーザー設定に依存するため、==
NEVARを使用する必要があります。 (実際に必要な場所を除きます。)==#
整数を比較するときに使用する推奨事項にも従います。 http //learnvimscriptthehardway.stevelosh.com/chapters/22.html#code-defensively
is#
代わりに、==#
防御的にコーディングする別の方法です:タイプセーフを改善します。 ます。http //google.github.io/styleguide/vimscriptguide.xml?showone = Type_checking#Type_checking
文字列リテラルと比較するときに使用する必要があります。
'single-quoted'
"double quoted"
文字列の代わりに別の良い習慣があります:http : //google.github.io/styleguide/vimscriptguide.xml?showone=Strings#Strings
HT @fc。-この答えは、彼らの上に構築答え少数の欠点を固定し、。
keepcaseプラグインの代わりに、SmartCaseを使用して、元のケースを保持しながら単語を置き換えることができます。(悪い評価に落胆しないでください。)
:%s/file\A\?size/\=SmartCase("LastModifiedTime")/ig
か