Skip to content

Terminal Search

OxideTerm provides two search modes for finding content in your terminal sessions — one for the current viewport, and another for the full session history.

ModeScopeSpeedBest For
Visible BufferCurrent viewport + xterm.js scrollbackReal-time (< 5 ms)Finding recent output quickly
Deep HistoryFull session history (up to 100,000 lines)Async (50–100 ms)Searching through extensive command history

Keyboard shortcut:

  • macOS: ⌘F
  • Windows: Ctrl+Shift+F
  • Linux: Ctrl+F

Or right-click in the terminal → Search.

┌──────────────────────────────────────────────────────┐
│ [Visible Buffer] [Deep History] [×] │
├──────────────────────────────────────────────────────┤
│ 🔍 Search terminal output... 2/15 [↑] [↓] │
├──────────────────────────────────────────────────────┤
│ □ Aa (Case) □ .* (Regex) □ Word (Whole Word) │
└──────────────────────────────────────────────────────┘
ElementFunction
Mode tabsSwitch between Visible Buffer and Deep History
Search inputType your search query
Match counterShows current position / total matches (e.g. 2/15)
Navigation previous, next match
OptionsCase sensitivity, regex, whole word matching

Searches content currently visible in the terminal viewport using xterm.js’s native SearchAddon.

  • Real-time highlighting — results appear as you type (150 ms debounce)
  • Yellow highlight — matching text highlighted in yellow
  • Orange highlight — currently selected match shown in orange
  • Fast — millisecond response, no backend round-trip
ActionShortcut
Next matchEnter or click
Previous matchShift+Enter or click
Close searchEsc

Visible Buffer search caps at 1,000 matches for performance. If you see 1000+ matches, refine your search query.

Searches the full session history stored in the backend scrollback buffer — default 30,000 lines, configurable up to 100,000 in settings.

  • Asynchronous — runs via spawn_blocking, keeping the UI responsive
  • Result list — displays all matches with line numbers and content
  • Click to jump — click any result to scroll the terminal to that position
  • Powered by Rust Regex — fast pattern matching on large buffers
┌──────────────────────────────────────────────────────┐
│ 15 matches (45ms) │
├──────────────────────────────────────────────────────┤
│ Line 1234 │
│ npm install react-dom │
├──────────────────────────────────────────────────────┤
│ Line 2456 │
│ npm install success — installed 23 packages │
├──────────────────────────────────────────────────────┤
│ ... │
└──────────────────────────────────────────────────────┘

Deep History shows the first 100 matches. If more exist, a footer shows the total count (e.g. Showing first 100 of 456 matches).

StateBehavior
Off (default)error matches error, Error, ERROR
Onerror matches only error
StateBehavior
Off (default)file.txt matches literally — the . is escaped
Onfile.txt also matches fileXtxt. matches any character
StateBehavior
Off (default)test matches test, testing, contest
Ontest matches only the standalone word test

Word boundaries include spaces, punctuation, and line start/end.

PatternDescriptionExample
^xxxLine start^Error: matches lines beginning with Error:
xxx$Line endsuccess$ matches lines ending with success
a|bORERROR|FATAL matches either word
\d+Digitsport \d+ matches port 3000, port 8080
\w+Word charsuser_\w+ matches user_admin, user_123
.*Any charsstart.*end matches anything between start and end
  1. Switch to Deep History
  2. Enable Regex
  3. Search: ^(ERROR|FATAL):
  4. Click results to jump to each occurrence
  1. Stay in Visible Buffer
  2. Search: git commit
  3. Press Shift+Enter to navigate upward
  1. Switch to Deep History
  2. Enable Regex
  3. Search: \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b
  4. Browse the result list
  1. Stay in Visible Buffer
  2. Enable Regex
  3. Search: port \d+
MetricValue
Response time< 5 ms
Max matches1,000
ScopeViewport + xterm.js scrollback
MetricValue
Search speed50–100 ms (100K lines)
EngineRust Regex
ExecutionAsync (spawn_blocking)
Default history30,000 lines (configurable to 100,000)

Combine options — Enable Regex + Case Sensitive + Whole Word together. For example, \bError\b matches only the standalone capitalized word “Error”.

Negative lookahead — Use ^(?!.*DEBUG).*ERROR to find lines containing ERROR but not DEBUG.

Anchored search — Add ^ or $ to reduce false matches and improve performance.

ActionmacOSWindows / Linux
Open search⌘ FCtrl+Shift+F (Win) / Ctrl+F (Lin)
Close searchEscEsc
Next matchEnterEnter
Previous matchShift+EnterShift+Enter

No results but content exists? Turn off Case Sensitive. Switch to Deep History if the content has scrolled past the viewport. Check regex syntax if enabled — look for error messages at the bottom of the search bar.

Deep History search slow? Simplify regex patterns. Add more specific search terms. Very large histories (100K+ lines) with complex patterns take longer.

“1000+ matches” in Visible Buffer? Refine your search. Use Whole Word matching or add anchors (^, $) to reduce matches.