# Search and Replace Regex
A powerful search and replace plugin for Obsidian with full regular expression support.
## Features
- **Search**: Search your notes with regular expressions, plain text, or whole word matching
- **Replace**: Replace single or all occurrences with support for regex capture groups
- **Search Options**:
- Case sensitive matching
- Whole word matching
- Regular expression mode (or plain text mode)
- **Navigation**: Jump between matches with keyboard shortcuts or buttons
- **Search History**: Access your recent searches and replacements
- **Match Counter**: See which match you're on (e.g., "3 / 12")
- **Persistent Settings**: Your default search preferences are saved
## Installation
1. Download the plugin files (`main.js`, `manifest.json`, `styles.css`)
2. Place them in your vault: `.obsidian/plugins/obsidian-search-replace-regex/`
3. Reload Obsidian
4. Enable the plugin in **Settings → Community plugins**
## Usage
### Quick Start
Press Ctrl/Cmd + F (or use the command palette) to open the Search panel:
- Type your search query (regex or plain text)
- Use the toggle buttons to customize your search:
- **Case sensitive**: Match letter casing
- **Whole word**: Match only complete words
- **Use regex**: Enable regular expression mode
- Navigate matches with **↑** and **↓** buttons or press F3 for next
### Replace
Press Ctrl/Cmd + H to open Search & Replace:
- Enter your search query and replacement text
- Click **Replace & Search** to replace one occurrence and move to the next
- Click **Replace All** to replace all matches at once
- Regex capture groups (like `$1`, `$2`) work in replacements
### Keyboard Shortcuts
| Action | Shortcut |
| -------------- | ----------------------------------------------------- |
| Search | Ctrl/Cmd + F |
| Replace | Ctrl/Cmd + H |
| Next match | F3 or Enter |
| Previous match | Shift + F3 |
| Replace single | Ctrl/Cmd + Enter |
| Replace all | Ctrl/Cmd + Shift + H |
| History | Ctrl/Cmd + ↓ |
| Exit search | Esc |
### Search History
Access previous searches with:
- **Arrow keys** in the search field to cycle through history
- **History button** or Ctrl/Cmd + ↓ to browse all past searches
- Click the trash icon to delete individual history entries
### Settings
Configure default search options in **Settings → Search and Replace with Regex**:
- Set default case sensitivity
- Enable whole word matching by default
- Enable regex mode by default
- Adjust maximum history items (5-50)
## Examples
### Search email addresses
```
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b
```
### Search and replace dates
Search: `(\d{4})-(\d{2})-(\d{2})`
Replace: `$3/$2/$1`
### Remove duplicate words
Search: `\b(\w+)\s+\1\b`
Replace: `$1`
## Development
### Setup
```bash
npm i
```
### Build
```bash
npm run build
```
### Watch mode
```bash
npm run dev
```
### Lint
```bash
npm run lint
```
### Format
```bash
npm format
```
## License
[0-BSD License](LICENSE)