レジスタで置換を使用するにはどうすればよいですか?


7

文字列が格納されているものを登録したとしましょう。ただし、置換コマンドを使用して変更したいとします。

たとえば、5x5のhtmlテーブルがあります。

let @t='<table>'.repeat('<tr>'.repeat('<td>_</td>',5).'</tr>',5).'</table>'

そして、プレースホルダー(_)を既存のレジスターを変更する(別のレジスターに割り当てるのではなく)ことによって理想的には他のデータに置き換えたいと思います。

私は次の構文を試しました:

"ts/_/test/g
"@ts/_/test/g " with modifiable set

エラーは発生しませんが、期待どおりに機能しません(prefixが%機能するのと同じように)。

それを行う適切な方法は何ですか?


あなたはあなたがエメットのようなものを望んでいるように見えます。
Peter Rincker、2015年

2
これ:help function-listは非常に便利なページであることに注意してください;-)そのページには、などの他のタグもありますstring-functions
Martin Tournoij 2015年

回答:


11

exコマンドはバッファーの内容を処理します。レジスタ(または変数)の内容については、対応するVimscript関数(存在する場合)を使用する必要があります。

の場合:substitute、同等のものはsubstitute()(それは簡単でしたよね?)

:let @t = substitute(@t, '_', 'test', 'g')

3
substitute()はと完全に同等ではありません:substitute。この関数は、'magic'設定されて'cpoptions'空であるかのように動作しますが、コマンドはユーザーが設定した値を監視します。
tommcdo 2015年

5

let-statementの使用とvim-scriptの処理とは別に、それをバッファーに貼り付けて、レジスターにヤンクする必要があります。

  1. "tp
  2. :.s/_/test/g
  3. "tdd
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.