[FEATURE] Option to keep conversation visible when using Ctrl-G external editor
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
When pressing Ctrl-G to open an external editor, Claude Code hides the conversation log by switching to an alternate screen buffer. This happens even when using GUI editors (like Neovide) that open in a separate window.
Current behavior:
- Press
Ctrl-G - Conversation log is hidden/cleared
- Editor opens (terminal or GUI)
- After closing editor, conversation reappears
Why this is a problem:
When writing prompts, I often need to reference the conversation:
- "What did Claude say about this error?"
- "What was the exact file path mentioned?"
- "Where did we leave off?"
Currently, I have to memorize or copy relevant parts before pressing Ctrl-G, which breaks the editing flow.
Workaround attempted:
I set EDITOR=neovide hoping the conversation would stay visible since Neovide opens in a separate window. However, Claude Code still hides the log regardless of editor type.
Proposed Solution
Add a configuration option to skip the alternate screen buffer switch when opening the editor:
{
"editor.keepConversationVisible": true
}
When enabled, Claude Code would not clear the screen before launching the editor, allowing users to see the conversation while editing (especially useful with GUI editors).
Alternative Solutions
- Auto-detect GUI editors - If
$EDITORpoints to a known GUI application (neovide, gvim, code, etc.), automatically skip the screen clearing behavior.
- Separate keybinding - Add a different shortcut (e.g.,
Ctrl-Shift-G) that opens the editor without hiding the conversation.
- Split view mode - Show the editor in a split view within Claude Code's TUI, keeping conversation visible above or beside the editor.
Priority
Medium - Would be very helpful
Feature Category
Interactive mode (TUI)
Use Case Example
_No response_
Additional Context
_No response_
5 Comments
I came here to report roughly the same issue, except that my proposed solution was a little different.
This often comes up when Claude's response has been long, perhaps there are several points within it, and sometimes I even wish to respond to those multiple points.
What I often do now, is copy Claude's response, Ctrl-g to open my editor, and then paste the response I had copied. That way I can see in the editor Claude's response. Sometimes I write my response and then delete the copy-and-pasted Claude response, sometimes I quote some or all of that response so that it is clear which part of the response I am now responding to.
So basically, my proposed solution is to either add another key-control or an option to allow Ctrl-g to open the editor with Claude's latest response quoted within it.
I was experiencing the exact same issue and came up with a solutuion.
I built a helper tool that keeps transcript context visible while opening an external GUI editor, so editing doesn’t blank the TUI state.
It’s effectively instantaneous in my setup (<5ms to first render), and it also upgrades output with OSC-8 hyperlinks so file/web links are clickable in supported terminals.
I'm still working on achieving true 1-to-1 visual parity with the claude code conversation including diffs but for now it's made using ctrl-g much more manageable.
Repo: https://github.com/gradigit/claude-pager
Before:
<img width="400" height="300" alt="Image" src="https://github.com/user-attachments/assets/234c6467-cd44-4458-acc2-12e6577785d7" />
After:
<img width="400" height="300" alt="Image" src="https://github.com/user-attachments/assets/034714ab-ffe9-4fcb-8e07-f4def76a91f9" />
For what it's worth the OpenAI
codexdoes not suffer from this problem. This is one of few areas where Claude Code looks less polished than the competition.I wonder what the rationale is for hiding it in the first place even is? I get that the prompt input is kinda strange to keep visible, but that could be cleared / replaced by a "<edited in editor>" placeholder easily...
Source-level root cause analysis
I've been investigating this issue for a custom macOS GUI editor (
resomark --wait) and can confirm the exact mechanism from the v2.1.86 binary (offset ~187532800):Any
$EDITORwhose basename doesn'tincludes()one of the 9 whitelisted strings getsenterAlternateScreen(). There's no heuristic detection of GUI vs terminal editors.Verification
I ran 11 controlled experiments to rule out process-level explanations before finding this:
| Hypothesis | Result |
|------------|--------|
| NSRunLoop vs raw
read()blocking | ❌ No effect || stdio detachment (
dup2to/dev/null) | ❌ No effect || Session detachment (
setsid()) | ❌ No effect || AppKit/NSApplication registration | ❌ No effect |
| Bash wrapper around
subl -w| ✅ Works (because basenamesubl-wrapper.shincludes"subl") |The wrapper result is the smoking gun — a shell script named
subl-wrapper.shcallingsleep 999would keep the TUI visible purely because of the filename.Proposed solution
A user-declarable setting would solve this for all GUI editors:
Or a user-extensible whitelist:
Either approach is minimal and backwards-compatible — the existing hardcoded list becomes the default, users can extend it for their editor of choice.