Previewur
Open previews instead of editors for configured file types and extensions with a preview command.
Features
- Auto-open preview — Opens preview when you open a supported file
- Auto-close preview — Closes the preview tab when the source tab closes
- Preview-only mode — Reader mode: preview only, one file at a time
- Diff-aware — Skips previews in git diff views (configurable)
- Configurable types —
previewur.languageIdsEnabled or command Previewur: Choose Preview File Types
- Robust state tracking — Self-healing preview detection; reopens after manual close
- Format-agnostic — Handles varied preview label formats (
"Preview: file", "Preview file")
Installation
From a VSIX or development host; Marketplace id follows publisher.name (see package.json).
Commands
| Command |
Keybinding |
Description |
| Toggle Previewur |
Ctrl+Shift+Alt+M |
Enable/disable |
| Toggle Preview-Only Mode |
Ctrl+Shift+Alt+P |
Reader mode |
| Choose Preview File Types |
— |
Multi-select picker |
| Configure Language Overrides |
— |
Set per-language behavior overrides |
On Mac, use Cmd instead of Ctrl
Configuration
Language IDs, commands, and file extensions are auto-detected from installed extensions. When you first open a supported file type, Previewur automatically enables it and shows a notification with a link to customize settings.
{
"previewur.active": true,
"previewur.doNotEnableNewLanguages": false,
"previewur.languageIdsEnabled": ["markdown", "asciidoc", "ansi"],
"previewur.defaultOpenPreviewToSide": true,
"previewur.defaultAutoClosePreview": true,
"previewur.defaultOpenOnGitDiff": false,
"previewur.defaultPreviewOnlyMode": false,
"previewur.defaultPreserveEditorColumn": true,
"previewur.languageIdsConfig": [
{
"languageId": "markdown",
"label": "Markdown",
"previewCommand": "markdown.showPreview",
"previewToSideCommand": "markdown.showPreviewToSide",
"fileExtensions": [".md", ".markdown"],
"seen": "first-time",
"openPreviewToSide": true,
"autoClosePreview": true,
"openOnGitDiff": false,
"previewOnlyMode": false
},
{
"languageId": "asciidoc",
"label": "AsciiDoc",
"previewCommand": "asciidoc.showPreview",
"previewToSideCommand": "asciidoc.showPreviewToSide",
"fileExtensions": [".adoc", ".asciidoc"],
"seen": "first-time",
"openPreviewToSide": false,
"autoClosePreview": true,
"openOnGitDiff": false,
"previewOnlyMode": false
},
{
"languageId": "ansi",
"label": "ANSI Text",
"previewCommand": "HNRobert.ansi-viewer.showPreview",
"previewToSideCommand": "HNRobert.ansi-viewer.showPreviewToSide",
"fileExtensions": [".ans", ".ansi"],
"seen": "first-time",
"openPreviewToSide": false,
"autoClosePreview": false,
"openOnGitDiff": false,
"previewOnlyMode": true,
"preserveEditorColumn": true
}
]
}
Configuration Notes
- Auto-detection: Extensions are scanned on startup; languages with preview commands are detected automatically
- First-time notification: When opening a new file type for the first time, Previewur shows a notification with a settings link
- Opt-out: Set
doNotEnableNewLanguages: true to prevent auto-enabling new detected languages
- Customization: Languages are added to
languageIdsConfig automatically with seen: "first-time" marker
- Minimal config: Only specify fields you want to override; defaults are used for omitted fields
Use the command Previewur: Configure Language Overrides to manage per-language settings via UI.
| Setting |
Default |
Description |
previewur.active |
true |
Master switch |
previewur.doNotEnableNewLanguages |
(omitted => false) |
Prevent auto-enabling newly detected languages |
previewur.languageIdsEnabled |
[] |
Which language IDs get auto-preview (auto-populated) |
previewur.languageIdsConfig |
[] |
Per-language configuration (auto-populated from scanned extensions) |
previewur.defaultOpenPreviewToSide |
true |
Preview beside source (overridable via languageIdsConfig) |
previewur.defaultAutoClosePreview |
true |
Close preview when source closes (overridable; ignored when defaultPreviewOnlyMode) |
previewur.defaultOpenOnGitDiff |
false |
Open preview in git diff (overridable) |
previewur.defaultPreviewOnlyMode |
false |
Preview-only reader mode — overrides defaultPreserveEditorColumn and defaultAutoClosePreview (overridable) |
previewur.defaultPreserveEditorColumn |
true |
Keep focus on source column after preview opens — prevents other files from opening in the preview column (overridable; ignored when defaultPreviewOnlyMode) |
languageIdsConfig Structure
Each entry in languageIdsConfig supports:
| Field |
Required |
Description |
languageId |
Yes |
VS Code language identifier |
label |
No |
Display name (defaults to languageId) |
previewCommand |
No |
Command for same-group preview |
previewToSideCommand |
No |
Command for side-by-side preview |
fileExtensions |
No |
File extensions for this language |
seen |
No |
Internal marker for first-time notification (auto-set) |
openPreviewToSide |
No |
Override default placement |
autoClosePreview |
No |
Override auto-close behavior (ignored when previewOnlyMode) |
openOnGitDiff |
No |
Override git diff behavior |
previewOnlyMode |
No |
Override reader mode |
preserveEditorColumn |
No |
Override source-column focus behavior (ignored when previewOnlyMode) |
Technical Implementation
Preview State Management
Previewur maintains robust tracking of opened previews with self-healing validation:
- Stale detection — Validates preview existence before blocking reopens; auto-clears stale entries
- Multiple entry points — Handles
onDidOpenTextDocument, onDidChangeActiveTextEditor, and tab events
- Preview-only mode support — Correctly reopens in reader mode after manual close
- Webview tab tracking — Monitors preview tab closures to maintain accurate state
- Flexible label matching — Supports multiple preview label formats from different extensions
Extension Detection
Dynamically scans installed extensions for preview commands:
- Auto-detects
showPreview and showPreviewToSide commands
- Extracts language IDs and file extensions from
package.json contributions
- Maps extensions to language IDs for accurate preview triggering
Acknowledgements
https://github.com/hnw/vscode-auto-open-markdown-preview
License
MIT