In all GUI text editors, web browsers and IDE’s you can move a cursor:
- left/right arrows - move by char;
- ctrl+left/right - move by word;
- home/end - move to start/end of line.
Add Shift to any of above combination and everything you jumped through now is selected and you can: Ctrl+C, Ctrl+X,Delete to copy/cut/delete selection.
Also, you can Ctrl+Delete and Ctrl+Backspace to delete a next/previous word.
Also, you can Ctrl+Home/End to jump to start of first line or end of last line.
I want this to work when I type in a command in my Terminal.
Is it possible in Linux? It’s a vanilla experience in Windows+Powershell, thanks to default PSReadlLine extension. It works both in conhost.exe and in Windows Terminal, but doesn’t work in WT + cmd.exe, which makes me think it’s PSReadLine which is responsible for this technological perfection.
“But you can’t copy with Ctrl+C, it’s…” - You can. When something is selected It copies selection to clipboard, otherwise it sends SIGINT.
I’m not bound to any distro or terminal application, but right now I don’t see these incredible text editing techniques working even in Ubuntu+Powershell+PSReadLine, to say nothing about the Bash. I’ve tried installing WezTerm, but it doesn’t have text selection either, at least by default. And I’m inclined to think it has nothing to do with terminal emulators at all, since it works in conhost.exe+Powershell.


I’ve got what I wanted with wezterm + powershell. I can edit my commands the same way I edit any text anywhere in the system, both in Windows and Linux, and I can copy-paste back and forth between terminal and any other app. This is awesome. This is freedom. This is UX done right.
I will paste below some observations I’ve made.
Possible solutions for Bash
Blesh
https://github.com/akinomyoga/ble.sh/wiki/Manual-§4-Editing
zsh-shift-select
cannot install package alacritty 0.16.1, it requires rustc 1.85.0 or newer, while the currently active rustc version is 1.75.0Fail. Will use Gnome Terminal instead.gnome-shell crashed with SIGSEGV..zshrcwezterm + Powershell
PSReadLine starts with EditMode = Emacs by default.
Set-PSReadLineOption -EditMode WindowsFixes Ctrl+arrows, Ctrl+backspace, Shift+Ctrl+arrows.Set-PSReadLineKeyHandler -Chord Ctrl+Delete -Function KillWord- Fixes Ctrl+Delete.Set-PSReadLineKeyHandler -Chord Ctrl+o -Function AddLine- allows Ctrl+o instead of Shift+Enter to create a new line without trying to execute. Shift+Enter is not possible in Linux.Reassigning Shift+Home/End in Gnome Terminal from scrolling viewport to something else is a rabbit hole, so I switched to wezterm, which fixed Shift+Home/End, and apparently also fixed a bug of Shift+arrows printing
D;D;D;instead of selecting. But broke Shift+Ctrl+arrows. But you can fix it back by disabling this assignment in lua config.Ctrl+C/V/X work fine, but without system clipboard synchronization. To fix it, install xclip. If it makes terminal freeze on Ctrl+C/X, update PSReadLine module.
Windows + conhost + Powershell Core
PSReadLine starts with EditMode = Windows by default.
Please keep at it! I’ve been looking for a while and I’m shocked how difficult such a seemingly simple thing is to get on Linux…
I’ve got what I wanted, but I’m a powershell user. For Bash, blesh looks very promising - it’s functionally same component as PSReadLine which makes all this stuff possible in pwsh.
Any particular recommendation?
For Bash - try blesh, it will enable some of common controls by default, and probably you will be able to manually enable other shortcuts. PSReadLine is calling
xclipeach time for copy/paste action for clipboard sync, probably it will be possible with Blesh too.I was able to test out what you’re looking for on macos and its default out of the box terminal does copy and pasting with command-c/x/v just like everywhere else in the os. I haven’t tested Unicode, but rich text and other marked up text types get copied with their formatting between editors that support it and as ansi characters when pasted into the terminal. Option (alt) arrow keys jump to the first letter of each “word” and control arrow keys don’t do what you want because at the os level they’re the keys for switching workspaces. Which is really nice and reminds me I need to set up my windows image to do this instead of uhh win-ctrl or whatever it is.
The default macos shell is zsh, so maybe with that shift-select extension you can get it the way you like.
Might be time to switch to a mac!
I’m really surprised that you couldn’t get alacritty working in Ubuntu, it’s been working fine on Debian stable for at least two major versions when installed through apt.
This is so cool. Unfortunately, macos isn’t an option for me and never had been (for common reasons why people usually switch to linux).
I’m glad you got it set up how you were looking to! Wezterm is a new one for me.