IMPORTANT: This is work in progress and more of a showcase than usable app.
A modern text-mode IDE for PHP and full-stack web development. Built on magiblot/tvision 2.0 — the actively-maintained fork of Borland's classic Turbo Vision — and inspired by RHIDE.
Default workspace — file tree, window list, structure panel pre-opened:
Editing a file with markdown syntax highlighting and live structure outline:
Editing C++ source with syntax highlighting, line gutter, and the open-window list panel:
- Syntax highlighting for 20+ languages (see supported languages)
- Line numbers gutter, whitespace visualization (tabs
», spaces·, EOL¶) - Multi-document editing (tile / cascade / window list)
- Find & Replace with history
- Go to Line, Find in Files (regex + case), Find Symbol across project
- Bracket matching, auto-close, full undo
- Configurable via Options dialog (
Tools → Options)
- RHIDE-style menu-driven interface
- File tree panel — sortable (name / date, asc / desc, dirs-first toggle)
- Structure panel — sortable (line / name / kind, asc / desc)
- Window list panel — switch between open editors and terminals
- Real terminal windows (libvterm-backed; runs vim, htop, less, etc.)
- Messages / output panel
- Status bar with keyboard shortcuts
- JetBrains-compatible — opens
.ideadirectory projects from IntelliJ / PhpStorm / WebStorm, parsesmodules.xml,.name,vcs.xml,.iml - Custom directory browser dialog with sort options
- Auto-detects VCS
Web stack: PHP, HTML, CSS / SCSS / LESS, JavaScript / JSX, TypeScript / TSX, Vue SFC, JSON, Markdown, YAML, SQL, XML / SVG, Twig / Blade / Latte.
Systems: C / C++ (with #-preprocessor), Java, C#, Go, Rust,
Kotlin, Swift, Lua.
Scripts & data: Python, Shell (sh / bash / zsh / fish), Ruby.
Config: Dockerfile, Makefile, INI, TOML, .env, .conf,
.properties.
| Extension | Language |
|---|---|
.php, .phtml |
PHP |
.html, .htm |
HTML |
.css, .scss, .less, .sass |
CSS |
.js, .jsx, .mjs, .cjs |
JavaScript |
.ts, .tsx |
TypeScript |
.vue |
Vue SFC |
.json, .jsonc |
JSON |
.md, .markdown |
Markdown |
.yml, .yaml |
YAML |
.sql |
SQL |
.xml, .svg, .xsl |
XML |
.twig, .blade, .latte |
Template |
.c, .cpp, .h, .hpp, .cc, .hh |
C / C++ |
.java |
Java |
.cs |
C# |
.go |
Go |
.rs |
Rust |
.kt, .kts |
Kotlin |
.swift |
Swift |
.lua |
Lua |
.py, .pyw, .pyi |
Python |
.sh, .bash, .zsh, .fish |
Shell |
.rb, .rake, .gemspec |
Ruby |
Dockerfile, Containerfile |
Dockerfile |
Makefile, *.mk |
Makefile |
.ini, .cfg, .conf, .properties |
INI |
.toml |
TOML |
.env, .env.* |
dotenv |
| Key | Action |
|---|---|
| F2 | Save |
| F3 | Open file |
| F4 | Search again |
| F5 | Zoom window |
| F6 | Next window |
| F10 | Menu |
| Ctrl-N | New file |
| Ctrl-T | New terminal |
| Ctrl-W | Close file |
| Ctrl-F | Find |
| Ctrl-H | Replace |
| Ctrl-G | Go to line |
| Ctrl-A | Select all |
| Ctrl-Z | Undo |
| Shift-F7 | Find in files |
| Ctrl-F12 | Find symbol |
| Alt-W | Window list |
| Alt-X | Exit |
When the file-tree panel has focus: s cycles sort modes, d toggles
"directories first".
See INSTALL.md for full install / build instructions.
Quick version (Debian / Ubuntu):
sudo apt install build-essential cmake libncurses-dev libgpm-dev perl
git clone --recursive https://github.com/macino/tvide.git
cd tvide
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
./build/tvideIf you forgot --recursive, run git submodule update --init --recursive.
./build/tvide # open empty IDE
./build/tvide src/index.php public/style.css # open files
./build/tvide /path/to/project # open project directoryOr from the menu: Project → Open project... to pick a directory with sort
options; File → Open for individual files.
src/
├── main.cpp # entry point
├── app.h / app.cpp # TVIDEApp, menus, event dispatch, idle, layout
├── editor/ # syntax-highlighted editor + options dialog
├── syntax/ # one lexer per language family
├── dialogs/ # find / goto / findsymbol / openproject / about
├── project/ # JetBrains .idea parser
├── panels/ # filetree / structure / messages / winlist / terminal
└── tvterm-core/ # PTY + libvterm bridge (terminal windows)
- magiblot/tvision 2.0 — modern Turbo Vision port (MIT)
- neovim/libvterm — terminal emulator (MIT)
- tvterm — PTY/vterm bridge code adapted for tvision
MIT License — see LICENSE for details. Bundled tvision and libvterm are used under their respective licenses.



