You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**Powerful search** - Find text across all cells with highlighting
49
-
-**Column filtering** - Show only rows matching specific criteria
50
+
-**Powerful search** - Find text across all cells with highlighting and regex pattern matching support
51
+
-**Advanced filtering** - Filter rows with complex regex queries
50
52
-**Flexible sorting** - Sort by any column with intelligent type detection
51
53
-**Text wrapping** - Wrap long cell content for better readability
52
54
-**Statistics & plots** - View column statistics with visual distribution charts
53
55
-**Vim keybindings** - Navigate naturally with h/j/k/l and more
56
+
-**Mouse support** - Click to select cells, scroll with mouse wheel, interact with dialogs
54
57
-**Pipe support** - Read from stdin for seamless integration with shell pipelines
55
58
56
59
@@ -219,9 +222,9 @@ tv uses vim-inspired keybindings for intuitive navigation.
219
222
|`/`| Search |
220
223
|`n`| Next search result |
221
224
|`N`| Previous search result |
222
-
|`Ctrl-/`| Clear search |
223
-
|`f`| Filter by column value |
224
-
|`r`|Reset/clear filter |
225
+
|`Esc`| Clear search highlighting / Close dialogs|
226
+
|`f`| Filter by column |
227
+
|`r`|Remove filter for current column|
225
228
|`s`| Sort ascending |
226
229
|`S`| Sort descending |
227
230
|`t`| Toggle column type (String → Number → Date) |
@@ -231,6 +234,18 @@ tv uses vim-inspired keybindings for intuitive navigation.
231
234
|`Esc`| Close dialogs / clear search |
232
235
|`q`| Quit |
233
236
237
+
### Mouse Support
238
+
239
+
| Action | Behavior |
240
+
|--------|----------|
241
+
|**Left Click**| Select cell at click position |
242
+
|**Scroll Wheel Up**| Scroll up one row |
243
+
|**Scroll Wheel Down**| Scroll down one row |
244
+
|**Click on Buttons**| Activate buttons in dialogs (Search, Filter, Stats) |
245
+
|**Click on Checkboxes**| Toggle checkboxes in forms (e.g., "Use Regex") |
246
+
247
+
**Note:** Mouse support works in most modern terminals. If your terminal doesn't support mouse events, you can still use keyboard navigation exclusively.
248
+
234
249
## Features in Detail
235
250
236
251
### Progressive Loading
@@ -282,53 +297,158 @@ Analyze your data with comprehensive statistics and modern ASCII plots.
282
297
- Frequency distribution with percentages
283
298
-**Visual distribution:** Bar chart of top 15 most frequent values
284
299
300
+
**Important:** When column filters are active, statistics are calculated **only on the filtered/visible data**, not the entire dataset. The dialog title will indicate when statistics are based on filtered data and show the number of active filters.
301
+
285
302
The statistics dialog features a split-pane layout with numerical stats on the left and an ASCII graph visualization on the right, powered by `asciigraph` for modern, clean plots.
286
303
287
304
### Search
288
305
289
-
Find text anywhere in your table with full highlighting support.
306
+
Find text anywhere in your table with full highlighting support and powerful regex pattern matching.
290
307
291
308
**How to search:**
292
309
293
310
1. Press `/` to open the search dialog
294
-
2. Type your search term (case-insensitive)
295
-
3. Press Enter to execute
296
-
4. Navigate results with `n` (next) and `N` (previous)
297
-
5. Press `Ctrl-/` to clear highlighting
311
+
2. Type your search term.
312
+
3.**Optional:** Press Tab to navigate to the checkboxes, then Space to enable:
313
+
-**Use Regex**: for pattern matching with regular expressions.
314
+
-**Case Sensitive**: for case-sensitive matching.
315
+
4. Press Enter to execute the search.
316
+
5. Navigate results with `n` (next) and `N` (previous).
317
+
6. Press `Esc` to clear highlighting.
318
+
319
+
**Search Modes:**
320
+
321
+
-**Plain Text (default):** Case-insensitive substring matching. Enable `Case Sensitive` for exact matching.
322
+
-**Regex:** Full regular expression support. By default, regex is case-insensitive. Enable `Case Sensitive` for case-sensitive regex matching.
323
+
324
+
**Navigation in Search Dialog:**
325
+
- Type your search query in the text field.
326
+
- Press `Tab` to move between the search field, checkboxes, and buttons.
327
+
- Press `Space` to toggle a checkbox when it is focused.
328
+
- Press `Enter` from anywhere in the form to execute the search.
329
+
- Press `Esc` to cancel and close the dialog.
298
330
299
331
**Visual feedback:**
300
332
- Current match: bright cyan highlight
301
333
- Other matches: gray highlight
302
-
- Footer shows position: `Match 3/12`
334
+
- Footer shows position: `Match 3/12` or `regex matches 3/12`
303
335
304
336
**Example:**
305
337
```
306
-
/ → type "error" → Enter → n → n → N → Ctrl-/
338
+
# Simple text search (case-insensitive)
339
+
/ → type "error" → Enter → n → n → N → Esc
340
+
341
+
# Case-sensitive text search
342
+
/ → check "Case Sensitive" → type "Error" → Enter
343
+
344
+
# Regex search examples
345
+
/ → check "Use Regex" → type "^ERROR" → Enter # Lines starting with ERROR (case-insensitive)
346
+
/ → check "Use Regex" and "Case Sensitive" → type "^Error" → Enter # Lines starting with Error (case-sensitive)
347
+
/ → check "Use Regex" → type "\\d{4}-\\d{2}-\\d{2}" → Enter # Date patterns (YYYY-MM-DD)
348
+
/ → check "Use Regex" → type "user(name)?" → Enter # Match "user" or "username"
349
+
/ → check "Use Regex" → type "error|warning|critical" → Enter # Match any of these words
350
+
/ → check "Use Regex" → type "@.*\\.(com|org)$" → Enter # Email domains ending in .com or .org
307
351
```
308
352
353
+
**Common Regex Patterns:**
354
+
355
+
| Pattern | Description | Example Match |
356
+
|---------|-------------|---------------|
357
+
|`^start`| Match at beginning of cell |`^Error` matches "Error: failed" |
358
+
|`end$`| Match at end of cell |`\\.txt$` matches "file.txt" |
359
+
|`\\d+`| Match one or more digits |`\\d+` matches "123" |
360
+
|`\\w+@\\w+\\.\\w+`| Match email pattern | Matches "user@example.com" |
361
+
| `word1\\|word2` | Match either word (OR) | `success\\|complete` matches either |
362
+
|`[A-Z]+`| Match uppercase letters |`[A-Z]{3}` matches "USA" |
363
+
|`.*`| Match any characters |`start.*end` matches "start...end" |
364
+
|`\\s+`| Match whitespace |`\\s{2,}` matches 2+ spaces |
365
+
366
+
**Note:** For case-insensitive regex search, the `(?i)` flag is automatically added to your pattern. For case-sensitive regex, this flag is omitted.
367
+
309
368
### Column Filter
310
369
311
-
Show only rows where a specific column matches your criteria.
370
+
Show only rows where specific columns match your criteria. **Supports filtering on multiple columns simultaneously**.
312
371
313
372
**How to filter:**
314
373
315
374
1. Navigate to the column you want to filter
316
375
2. Press `f` to open the filter dialog
317
-
3. Type filter text (case-insensitive, partial match)
318
-
4. Press Enter to apply
319
-
5. Press `r` to reset and show all rows
376
+
3. Use the dropdown to select an operator (e.g., `contains`, `equals`, `regex`, `>`).
377
+
4. Enter the value to filter by.
378
+
5. Optionally, check the `Case Sensitive` box.
379
+
6. Press Enter to apply the filter.
380
+
7.**Repeat on other columns to add more filters**
381
+
8. Press `r` on a filtered column to remove that column's filter
382
+
383
+
**Multi-Column Filtering:**
384
+
385
+
- Apply filters to **multiple columns** by pressing `f` on each column and entering criteria
386
+
- All filters are combined with AND logic (rows must match all active filters)
387
+
- Each column can have different filter criteria including operators
388
+
- Press `f` on a filtered column to edit or remove its filter (empty query removes the filter)
389
+
- The footer shows how many filters are active
390
+
- Filtered column headers display 🔎 icons with orange background
391
+
392
+
**Operators:**
393
+
394
+
| Operator | Description |
395
+
|---|---|
396
+
|`contains`| Matches cells containing the term |
397
+
|`equals`| Matches cells that are exactly the term |
398
+
|`starts with`| Matches cells that start with the term |
399
+
|`ends with`| Matches cells that end with the term |
400
+
|`regex`| Matches cells based on a regular expression |
401
+
|`>`| Numeric: greater than (number columns only) |
402
+
|`<`| Numeric: less than (number columns only) |
403
+
|`>=`| Numeric: greater than or equal (number columns only) |
404
+
|`<=`| Numeric: less than or equal (number columns only) |
405
+
406
+
**Key Features:**
407
+
-**Numeric operators** (`>`, `<`, `>=`, `<=`): Only work on numeric and date columns (automatically detected). Perform numeric comparisons instead of text matching.
408
+
-**Regex**: Provides the full power of regular expressions for complex pattern matching.
409
+
-**Case-Insensitive by default**: All string-based comparisons are case-insensitive unless the `Case Sensitive` box is checked.
410
+
-**Visual indicator**: Filtered column headers show 🔎 icons and an orange background
0 commit comments