LazyDotIDE 0.0.16
dotnet tool install --global LazyDotIDE --version 0.0.16
dotnet new tool-manifest
dotnet tool install --local LazyDotIDE --version 0.0.16
#tool dotnet:?package=LazyDotIDE&version=0.0.16
nuke :add-package LazyDotIDE --version 0.0.16
LazyDotIDE
<div align="center"> <img src=".github/logo.svg" alt="LazyDotIDE Logo" width="600"> </div>
<div align="center">
</div>
<div align="center">
⭐ If you find LazyDotIDE useful, please consider giving it a star! ⭐
It helps others discover the project and motivates continued development.
</div>
A console-based .NET IDE built on SharpConsoleUI.
Edit. Build. Ship.
Why LazyDotIDE?
Sometimes you just want to stay in the terminal. Install it as a dotnet tool, and you get C# IntelliSense, git, build, test, and a shell — zero config, works anywhere you have a console.
Highlights
- LSP IntelliSense — completions, go to definition, rename, code actions, diagnostics
- Multi-tab editor — syntax highlighting for C#, JSON, XML, YAML, JS/TS, Razor, and more
- Built-in terminal — full PTY shell in tabs, bottom panel, or side panel
- Git integration — stage, commit, push, pull, diff, blame, branch management
- Build & test — one-key build/run/test with click-to-navigate errors
- Zero config — just
dotnet tool installand go
For the full feature list, see Features below.
Quick Start
dotnet tool install --global LazyDotIDE
lazydotide /path/to/your/project
Or from source:
git clone https://github.com/nickprotop/lazydotide.git
cd lazydotide
dotnet run -- /path/to/your/project
Run without arguments to open in the current directory.
Features
Editor
- Multi-tab editing with dirty tracking and unsaved-changes prompts
- Syntax highlighting for 12+ languages (C#, JSON, XML, YAML, Markdown, HTML, CSS, JavaScript/TypeScript, Razor, Dockerfile, Solution files, Diff)
- Manual syntax override via menu
- Find and replace (
Ctrl+F/Ctrl+H) - Word wrap modes (no wrap, word wrap, char wrap)
- Binary file detection (shown as non-editable)
- External file change detection with reload prompt
IntelliSense / LSP
- Auto-completions triggered on
.,(,,, and after typing (alsoCtrl+Space) - Go to definition (
F12), go to implementation (Ctrl+F12), find all references (Shift+F12) - Rename symbol across files (
Ctrl+F2) - Code actions (
Ctrl+.) - Format document (
Alt+Shift+F) - Hover / type info (
Ctrl+K) - Signature help (
F2, auto-triggers on(and,) - Real-time diagnostics (errors/warnings in status bar and problems panel)
- Document symbols in side panel (
Alt+O) - Navigation history with navigate back (
Alt+Left)
Git
- Stage, unstage, commit, push, pull, stash (with message), stash pop
- Branch listing, create branch, switch branch
- Diff (working directory, staged, full)
- Blame (per-line: SHA, author, date)
- Repository log and per-file log with commit detail view
- Gutter diff markers in editor (green/yellow/red for added/modified/deleted)
- Real-time status bar (branch, ahead/behind, M/A/D counts)
- Explorer badges per file (
M,A,D,U,R,!,I) - Gitignore support (add/remove paths, dimmed display in explorer)
- Discard changes
- Source control side panel with interactive staged/unstaged file list
Build & Run
- Build (
F6), test (F7), clean, run (F5) with colorized output - Stop running process (
F4) - Problems panel with click-to-navigate on build errors/warnings
- Auto-detects
.csproj,.fsproj,.slnbuild targets
Terminal
- Bottom shell in output panel (
F8) - Editor tab shell (via menu)
- Side panel shell (
Shift+F8) - Full PTY support for interactive programs
- Multiple concurrent shell instances
File Explorer
- Tree view with expand/collapse
- Git status badges and directory change indicators
- Gitignore dimming for ignored files
- Context menus (new file/folder, rename, delete, git operations)
- File watcher for automatic refresh on external changes
NuGet
- LazyNuGet integration (
F9) when installed - Built-in add package dialog as fallback
Workspace Persistence
Saved to .lazydotide.workspace in the project root on exit, restored on startup:
- Open files with cursor positions
- Panel visibility and column widths
- Split ratios and word wrap mode
- Explorer expanded nodes and selected path
Custom Tools
Configure external tools in config.json — each tool appears in the Tools menu and command palette with options to open in a tab, bottom shell, or side panel.
Command Palette
Ctrl+P opens a searchable palette of all commands, organized by category (File, Edit, Build, Run, View, Git, LSP, Terminal, NuGet, Tools, Help). Custom tools are included dynamically.
Keyboard Shortcuts
File
| Key | Action |
|---|---|
Ctrl+S |
Save current file |
Ctrl+W |
Close current tab |
Ctrl+N |
New file |
Ctrl+Shift+N |
New folder |
F2 |
Rename (explorer focused) |
Delete |
Delete (explorer focused) |
Alt+Shift+R |
Reload file from disk |
Alt+F4 |
Exit |
Build & Run
| Key | Action |
|---|---|
F5 |
Run project |
F6 |
Build |
F7 |
Run tests |
F4 |
Stop |
View
| Key | Action |
|---|---|
Ctrl+B |
Toggle file explorer |
Ctrl+J |
Toggle output panel |
Alt+; |
Toggle side panel |
Ctrl+P |
Command palette |
Search
| Key | Action |
|---|---|
Ctrl+F |
Find / Replace |
Ctrl+H |
Find / Replace |
LSP / IntelliSense
| Key | Action |
|---|---|
Ctrl+Space |
Show completions |
F12 |
Go to definition |
Ctrl+F12 |
Go to implementation |
Shift+F12 |
Find all references |
Ctrl+F2 |
Rename symbol |
Ctrl+. |
Code actions |
Ctrl+K |
Hover / type info |
F2 |
Signature help |
Alt+Shift+F |
Format document |
Alt+O |
Document symbols |
Alt+Left |
Navigate back |
Git
| Key | Action |
|---|---|
Alt+G |
Source control panel |
Ctrl+Enter |
Commit |
Terminal
| Key | Action |
|---|---|
F8 |
Shell in output panel |
Shift+F8 |
Shell in side panel |
F9 |
LazyNuGet (or NuGet dialog) |
Syntax Highlighting
| Language | Extensions |
|---|---|
| C# | .cs |
| JSON | .json |
| XML | .xml, .csproj, .fsproj, .vbproj, .props, .targets |
| YAML | .yml, .yaml |
| Markdown | .md |
| HTML | .html, .htm |
| CSS | .css |
| JavaScript / TypeScript | .js, .jsx, .mjs, .cjs, .ts, .tsx, .mts, .cts |
| Razor | .razor, .cshtml |
| Dockerfile | Dockerfile, Dockerfile.* |
| Solution | .sln |
| Diff | (used in git diff views) |
Syntax can be manually overridden via the Edit menu.
Configuration
Config file location:
- Linux/macOS:
~/.config/lazydotide/config.json - Windows:
%APPDATA%\lazydotide\config.json
A default config is created on first run. Edit it via Tools > Edit Config — changes reload automatically on save.
{
"lsp": null,
"tools": [
{
"name": "htop",
"command": "htop",
"args": null,
"workingDir": null
},
{
"name": "Lazygit",
"command": "lazygit",
"args": null,
"workingDir": null
},
{
"name": "Git Log",
"command": "bash",
"args": ["-c", "git log --oneline --graph --all --color=always; exec bash"],
"workingDir": null
}
]
}
Custom Tools
Each tool entry has:
name— display name in menus and command palettecommand— executable to runargs— optional argument arrayworkingDir— optional working directory (null = project root)
LSP Override
Set the lsp field to use a specific language server:
{
"lsp": {
"command": "csharp-ls",
"args": []
}
}
LSP Setup
LazyDotIDE auto-detects a C# language server in this order:
lspfield inconfig.jsonDOTNET_IDE_LSPenvironment variablecsharp-lsin PATH- OmniSharp in known locations (
~/.omnisharp/,/opt/omnisharp/) OmniSharpin PATH
Recommended: install csharp-ls:
dotnet tool install --global csharp-ls
Requirements
- .NET 10.0
- A terminal that supports ANSI escape codes
- Optional:
xclip,xsel, orwl-copy/wl-pastefor clipboard support on Linux
Status
LazyDotIDE is in active early development. It works and is used daily, but expect rough edges. Contributions, feedback, and bug reports are welcome.
Built on
SharpConsoleUI — a console windowing and UI framework for .NET.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.0.16 | 84 | 3/30/2026 |
| 0.0.15 | 100 | 3/25/2026 |
| 0.0.14 | 86 | 3/22/2026 |
| 0.0.13 | 136 | 3/15/2026 |
| 0.0.12 | 111 | 3/15/2026 |
| 0.0.11 | 112 | 3/13/2026 |
| 0.0.10 | 92 | 3/6/2026 |
| 0.0.9 | 88 | 3/4/2026 |
| 0.0.8 | 96 | 2/28/2026 |
| 0.0.7 | 89 | 2/28/2026 |
| 0.0.6 | 89 | 2/27/2026 |
| 0.0.5 | 86 | 2/27/2026 |
| 0.0.4 | 87 | 2/27/2026 |
| 0.0.3 | 87 | 2/27/2026 |
| 0.0.2 | 85 | 2/27/2026 |
| 0.0.1 | 90 | 2/26/2026 |