Chapter 3 — File Browser and Editor
The editor is where you spend most of your time inside a connection tab. This chapter covers everything that lives in the center pane and its file-tree neighbours.
Opening files and projects
There are several routes to getting code on screen:
- File → Open File… (
Ctrl+O) — single file picker. Opens the file in the editor of the currently focused connection tab. If no connection is focused, opens in a local editor tab. - File → Open Project Folder… (
Ctrl+Shift+O) — opens an entire directory as the workspace root. The local file browser tree jumps to that folder. - File → New Project from Template… (
Ctrl+Shift+N) — scaffolds a starter project. Templates include Python script, Flask API, ESP32 firmware, Raspberry Pi script, FastAPI service, etc. - Double-click a file in the file browser — opens it in the editor. Works for remote files too (over SFTP).
- Drag a file from your OS file manager onto the editor area — opens it.
The recently used items live under File → Recent Files (last 20).
Local file browser
The local tree shows your computer's filesystem. By default it is rooted at your home directory; Open Project Folder changes the root.
Useful right-click items:
- New File / New Folder — quickly scaffold next to an existing path.
- Rename, Duplicate, Delete — usual file ops. Delete sends to the OS recycle bin/trash on supported platforms; otherwise prompts for hard delete.
- Open in OS Explorer / Finder — reveals the file outside AidaIDE.
- Copy Path — full absolute path to the clipboard.
Remote file browser (SFTP)
Inside a connection tab, the Remote tree shows the file system on the SSH host, fetched on demand via SFTP. The columns are Name, Size, Modified.
Behaviour worth knowing:
- Right-click an empty area to refresh.
- Double-click a folder to expand; double-click a file to open it in the editor.
- Right-click a file for Run (calls a sensible interpreter —
pythonfor.py,bashfor.sh,nodefor.js,cat/tailfor log-like files), Rename, Delete, Download (copies to local), chmod +x (adds execute), Properties. - Drag-and-drop between the local and remote trees uploads / downloads.
- Permissions stick. Renaming or moving a file does not change its mode bits.
If you delete a file by mistake, there is no remote trash. Be careful with Delete on the remote tree.
The editor
The editor pane has a tab strip at the top — one tab per open file. Files open in the same editor regardless of whether they live locally or on the remote host.
Syntax highlighting
Driven by file extension. Supported out of the box: Python, JavaScript/TypeScript, C/C++, Go, Rust, Java, HTML, CSS, Markdown, JSON, YAML, TOML, INI, Bash/Shell, PowerShell, SQL. New file types can be added via Settings → Editor → Syntax.
If you save a file with a different extension (Save As… .txt → .py), the highlighter re-evaluates. If for any reason highlighting does not update, close and reopen the file — this is a known minor trap.
Cursor and selection
- Standard arrow / shift-arrow navigation.
Ctrl+→/Ctrl+←move by word.Home/Endjump to line start/end. PressingHometwice jumps to column 1 vs. first non-whitespace, like most editors.Ctrl+Aselects the whole document.- Multi-cursor:
Alt+Clickadds a cursor at the click point.
Split panes
Open a second editor next to the first to compare files or edit two regions of the same file:
- Right-click an editor tab → Split Right opens a copy in a side pane.
- The active pane has a highlighted border. Click in a pane to focus it.
- Each pane has its own cursor and scroll position; saves apply to the underlying file regardless of pane.
Save and Save As
Ctrl+S— save the current file. If it is a remote file, the save goes over SFTP and does not silently fall back to local on failure.- File → Save As… — save under a new path. Updates the highlighter if the extension changed.
- Files with unsaved changes show an asterisk in the tab title.
- Closing an unsaved tab prompts to save first.
Find and Find in Files
Two related dialogs:
- Find (
Ctrl+F) — search inside the current file. Options: case-sensitive, whole word, regex. Replace withCtrl+H. Find next isF3(orEnterin the find box). - Find in Files (
Ctrl+Shift+F) — search across the project root (set by Open Project Folder). Results list groups by file; double-click a result to jump to the line. - Go to Line (
Ctrl+G) — type a line number and jump. Accepts42:10syntax to put the cursor at column 10 of line 42.
Running files
The editor's top toolbar has a Run (▶) button. It runs the current file using a sensible interpreter:
.py→pythonon the host where the file lives. On a remote file it runs in the remote terminal; on a local file it spawns a process and pipes output to a Run panel..sh→bash..js,.ts→node..go,.rs,.c,.cpp→ compile + run (where toolchains are present).- Log/data files (
.log,.json,.yaml,.txt,.md) → opened withcat/tailso you can preview without an editor session.
If the file type has no runner, the button is disabled and the tooltip explains why.
Git integration
Tools → Git holds:
- Git Manager — list of repos AidaIDE knows about, branches, dirty status. Click a repo to drill into a sub-window with file diffs.
- Quick Push — stages all, commits with a prompt for the message, pushes the current branch.
- Git Pull — fetches and fast-forwards.
- Git Status — equivalent of
git statusin a panel rather than a terminal. - Diff Viewer — side-by-side diff of working tree vs. HEAD. Also reachable from the toolbar Git button on the far right.
- Publish to GitHub — wraps
gh repo createif theghCLI is installed. Otherwise prints instructions.
Branch selector lives on the right side of the toolbar. The ↑ button next to it is Push for the current branch.
Diff Viewer
Three modes:
- Working vs HEAD — current uncommitted changes.
- Two commits — pick any two from a dropdown.
- Two files — compare any two open editor tabs side by side. Useful when you have a remote and local copy of the same file.
Editor features worth knowing
- Auto-save (optional) — off by default. Toggle in Settings → Editor → Save.
- Format on save — off by default. When on, calls the language's default formatter (
blackfor Python,prettierfor JS, etc.). - Linting — Python and JavaScript get inline lint warnings if
ruff/eslintis onPATHof the host where the file lives. - Bookmark a line —
Ctrl+F2. Jump between bookmarks withF2/Shift+F2. - Multi-line edit / column edit —
Alt+Shift+dragto make a column selection.
Terms & Setup
Workspace
The current set of open tabs, file browser root, and layout. Saved via File → Save Workspace As…. Re-opens with all tabs restored. See Chapter 16.
Local vs remote file
A local file lives on your computer. A remote file lives on the SSH host of the currently focused connection tab. The editor handles both transparently; the tab title shows the host name in front of remote paths.
Project root
The directory passed to Open Project Folder. Find-in-Files and the local file tree both scope to this. Change it any time by opening a different folder.
Run panel
The bottom panel where script output appears when you click Run on a local file. Auto-scrolls. Right-click for Clear and Save Output As….
"I am editing but my changes do not seem to save"
- Did you click in the correct pane? Saves apply to the focused editor.
- For remote files, is the connection alive? A red dot on the connection tab means SFTP saves will fail.
- If the file persists but reopens with old content, you may be looking at a stale local mirror. AidaIDE does not maintain mirrors on purpose — close the tab and re-open the file from the remote tree to verify.
Encoding (UTF-8)
All files are read and written as UTF-8 by default. If you open a legacy CP1252 / Latin-1 file, AidaIDE will show replacement characters (�). Use File → Reopen With… to pick a different encoding. Save back as UTF-8 when possible — mixed encodings cause real data loss across reload cycles.
Line endings
The status bar shows the current file's line ending mode (CRLF or LF). New files default to LF on all platforms. Change with File → Line Endings in the menu.
"How do I open a file in two editors at once?"
Right-click the tab → Split Right, then Ctrl+P (Open File) in the new pane to load the same file. Edits in one pane reflect in the other after each save.
Project templates available
- Python script (single file)
- Flask web app
- FastAPI service
- ESP32 firmware (PlatformIO layout)
- Arduino sketch
- Raspberry Pi Python project
- Node.js CLI
- Static HTML site
Pick one in File → New Project from Template… and AidaIDE scaffolds it into the folder you choose.