4

だから私はこのようなものを取る方法を探していました

Two words
Three Words Here

そして、これに置き換えます

Twowords = myHash["Two words"];
ThreeWordsHere = myHash["Three Words Here"];

この質問を見つけて、サブ置換コマンドにたどり着き、このようなものにたどり着きました。

%s/\(\([A-z ]\)\+\)/\=substitute(submatch(1), ' ', '', 'g')/

これで、スペースが表示されずに一致が取得されますが、等号の後には何もありません。置換式の後にテキストを追加すると、「E51: 無効な式」エラーが発生します。

私の質問は: 式を終了し、:s コマンドにテキストを追加する方法はありますか? このようなもの。

%s/\(\([A-z ]\)\+\)/\=substitute(submatch(1), ' ', '', 'g') = myHash["\1"];/

私は何も見つけることができませんでした。:help sub-replace-\= およびその他のソースをオンラインで調べました。ありがとう!

4

1 に答える 1

6

あなたはほとんどそれを持っていました。

アトムの後のものはすべて\=式でなければならないため、文字列を連結してsubmatch()再度使用する必要があります。すでに提供した正規表現を使用します。

:%s/\(\([A-z ]\)\+\)/\=substitute(submatch(1), ' ', '', 'g') . ' = myHash["' . submatch(1) . '"];'/
于 2012-04-11T20:38:01.353 に答える