## 経緯
- [[Neovim]]では[[ReplaceWithRegister]]を使って、[[無名レジスタ]]を汚さずに[[ヤンクレジスタ]]の内容を特定対象に対してput(置換)したい
- ただ、[[Vimrc Support Plugin (Obsidian)|Vimrc Support Plugin]] や他プラグインでもそのような機能はなさそう
- [[Vimrc Support Plugin (Obsidian)|Vimrc Support Plugin]] に実装するのが一番良さそう
- ただ、『メンテナ募集中』と書かれているので、PRマージしてもらうのはキツイかも
- とりあえずforkしてつくってみる
## 対象リポジトリ
最新をcloneしてビルドし、`main.js` を置き換えればOK.
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" />
<span class="link-card-v2-site-name">GitHub</span>
</div>
<div class="link-card-v2-title">
GitHub - tadashi-aikawa/obsidian-vimrc-support: A plugin for the Obsidian.md note-taking software
</div>
<div class="link-card-v2-content">
A plugin for the Obsidian.md note-taking software. Contribute to tadashi-aikawa/obsidian-vimrc-support developme ...
</div>
<img class="link-card-v2-image" src="https://opengraph.githubassets.com/a07327a0752d129656bb9173f98d0ad2ff714894d4e2bd12ca475ef075395538/tadashi-aikawa/obsidian-vimrc-support" />
<a href="https://github.com/tadashi-aikawa/obsidian-vimrc-support"></a>
</div>
## 機能追加の方針
- `replaceWithRegister` operator を定義する
- operator に渡された range を register 内容で置換する
- 置換対象のテキストは yank/delete しない
- そのため register は上書きされない
[[Codex CLI]]に作成してもらった。対象コミットは以下。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" />
<span class="link-card-v2-site-name">GitHub</span>
</div>
<div class="link-card-v2-title">
feat: support mapping an operator to replace text with the yank register · tadashi-aikawa/obsidian-vimrc-support@b00eefa
</div>
<div class="link-card-v2-content">
A plugin for the Obsidian.md note-taking software. Contribute to tadashi-aikawa/obsidian-vimrc-support developme ...
</div>
<img class="link-card-v2-image" src="https://opengraph.githubassets.com/f0141ccb948cb0cbdfefd215e9e80223fb4c50f4020f60ea6118a57c6538e662/tadashi-aikawa/obsidian-vimrc-support/commit/b00eefac8ea9d2578f0215ffd748c9397edace38" />
<a href="https://github.com/tadashi-aikawa/obsidian-vimrc-support/commit/b00eefac8ea9d2578f0215ffd748c9397edace38"></a>
</div>
## 設定
`obsidian.vimrc` に以下を追加する。[[Leaderキー]]でなくてもなんでもよい。
```
replacewithregister <leader>
```
自分の場合は `_` を割り当てた。
```
replacewithregister _
```
## 動作イメージ
```
"from" -----------> 'to'
```
とありカーソルが先頭で `yi"_i'` とすると
```
"from" -----------> 'from'
```
となる。[[無名レジスタ]]は `from` のままであり、`to` で上書きされない。