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.languageIdsEnabledor 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
Cmdinstead ofCtrl
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: trueto prevent auto-enabling new detected languages - Customization: Languages are added to
languageIdsConfigautomatically withseen: "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
showPreviewandshowPreviewToSidecommands - Extracts language IDs and file extensions from
package.jsoncontributions - Maps extensions to language IDs for accurate preview triggering
Acknowledgements
https://github.com/hnw/vscode-auto-open-markdown-preview
License
MIT