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.


zsh shift select is probably a good start. Zsh can most likely be rebound to do what you want with the possible exception of break.
Don’t do what you want though. It’s stupid, will make you unhappy and cause you problems.
Your terminal isn’t powershell. Your terminal emulator is an emulation of a terminal. There is a shell that it runs, probably bash, but it’s also an emulated terminal.
Powershell (and shells that slough off compatibility for the sake of adapting newer ideas, like zsh) is cool, but its able to be the way that it is because it isn’t a terminal emulator.
If you change a bunch of shit around to make zsh like powershell then you can break your terminal emulation.
Instead, either use tmux or screen bound the way you want, with their defaults or just don’t use the terminal. You don’t need to. If you do need to then you’ll be exposed to funny things like “the terminal isn’t a wysiwyg editor” and “stdio includes function keys” which require a layer of abstraction in between you and the terminal like tmux or screen, which have existed for many years and are the mature, feature rich solution to your problem.
The benefit of not doing what you want by making yet another mutant zsh and instead adopting one of the existing solutions is that your terminal will work like all the others, so when someone asks you to try something in order to troubleshoot a problem you’ll be able to instead of having to troubleshoot how your weird garbage is different from theirs.
Another huge benefit of not creating a special, unique zsh to do what you want is that you will gain competency with every terminal you’ll ever encounter. Which means that instead of being lost when sat down at a terminal other than your own, you’ll be just fine.
If you want to persist in the doomed world you have created, though, oh-my-zsh documentation will probably get you most of the way to the rest of what you want.
Than you for the link, it looks like a very close match, even though I don’t quite understand how it is related to eMacs.
About what I’m trying to do being stupid — very interesting. What about learning vim only to notice you can’t use this skill in 70% text editing areas you interact with, and searching for firefox vi extension afterwards and trying to apply .vimconfig to it, is it stupid? Probably not. But trying to select, copy and paste text in a text-based program — that is stupid. I got it.
I am not trying to insult you, I am trying to help you to not do something stupid.
I understand that you think everything working the same would be better, I was trying to explain how that’s not the case and you will ultimately be better off not doing the thing you’re suggesting.
To butcher a car metaphor: a peterbilt has lots more controls and gauges than a camry and they’re in different places some of the time. Wouldn’t it be better to make all the controls the same? No, of course not. A low range gearbox, intercooler temperature gauge, gigantic steering wheel with a knob and all the other differences are necessary for effectively hauling freight. Those same controls are not useful in a sedan. Do truckers have massive problems driving the grocery getter when they’re not working? No, of course they don’t. Sometimes you might give the gear selector a pull in the wrong direction but that’s no big deal.
Instead of making a mutant terminal and dealing with all the problems that could cause you, you will almost always find it’s better to learn screen or tmux (with one of their default bindings) because then you will have a fewer problems, an easy time communicating with people about the ones you do have, and a broader skillset.
Again, I am not trying to insult you, I am trying to keep you from doing something stupid.
I feel like you’re just defending the final state you observe. E.g. why do you hate shift+arrows for text selection but not arrows themselves for moving a cursor? And how selecting text with a mouse is better? I find it even funny to think one of these techniques is cursed and other are blessed. Never I could imagine selecting text with Shift can encounter such opposition.
I do not hate selecting text with shift. I do not even oppose selecting text with shift. The Macintosh user interface model is the standard for gui operations. It’s good to know how to use the interface of gui applications because usually the majority of your time will be spent in them.
The terminal has a different interface. It’s different for a lot of reasons. Some are historical, some are technical, some are based on interface standards and ideas.
I’m trying to help you understand how learning to use the terminal as it exists will be a better solution than making the terminal behave in the way you’re already familiar with.
The reason it’s a better solution is that using the terminal as it exists allows you to more easily communicate and learn & allows you to use a broad range of tools on any system without having to import a bunch of configurations, programs or environment variables.
It’s easy to read my comments and come to the conclusion that wanting to use the Macintosh text selection keys is the thing I think is stupid, but what I’m trying to reiterate in every reply is that making the terminal use Macintosh text selection keys is the thing I think is stupid.
Part of learning how to use a computer is developing a combination of skills and tools that you can use to solve the problems that communicating by doing mathematics really fast always entails. I am trying to convince you to learn the toolbox the computers terminal comes with before you start to weld a tire iron on to your ratchet wrench.
Macintosh has nothing to do with it. Maybe I want to grow selection to the left with E and to the right with R - they are not Macintosh keys, but still I will have a hard time trying to get what I want.
Do you mean this whole concept of growing selection from the same cursor you type with and performing operations on this selected area as a single entity is a Macintosh-way, originated in GUI? And its foreign to terminals and terminals developed a different way of editing text and you propose learning this native text-editing without using foreign techniques like cursor-based text selection… This makes sense. And sure it’s possible to be effective in terminal while using it traditional way. If this is what you mean, now I understand.
I made a glimpse on the world where this shift-selection doesn’t exist and got excited about this feature even more, and I even think it’s genius.
System-wide clipboard is probably not the “traditional way” either, and it doesn’t work quite well in Linux terminals too.
A couple of years ago I invested some time into Vim and it was a pleasant experience, but it was detached from all other experiences I had on my PC. Mentally switching between different text editing modes is disgusting, I hate it so much. I don’t want a new one. I’m fine with the one I have.
Linux and its terminals are meaningful only as long as they do what I want them to do. I don’t care if some of my activities are “not Linux-way”.
Yeah when I call them the Macintosh keys that’s because I’m almost 100% that the 84 Macintosh was the first thing to use them. Not just the keys specifically, but that operating model we I guess later called wysiwyg. I think it was command instead of control, but it occupies the same place on the keyboard. It’s certainly the oldest thing I’ve used that had them. Windows used to do it like old dos word processors did, with insert and delete etc.
It’s the design and interface language of gui software for at least 40 years and everyone should know it.
System wide clipboard would work fine in the terminal but it would be a downgrade, you’d have to give up all the lovely buffers that all your different editors use and are designed around. Even lowly less has a buffer select somewhere in there. Most of the time shift-ctrl-v lets me dump the whatever the system clipboard is out into the command prompt if I need to.
If the idea of using a different modality for editing text bugs you so much, what do you think of the fact that you already use one? When you’re typing your fingers are on the home row and when you need to edit you switch your right hand to the arrow and function keys. It’s a lot like how editing in vim requires me to move my right hand one key over to the left.
That way of thinking is how I was able to accept learning vi keys and vim about twenty years ago when I had the same thoughts as you about new shortcuts.
An alternative might be using macos. I can’t remember if it uses the mac keys to cut and paste into its terminals but it might.