Anyone knows if it's possible to color command line commands as you type them (kind of like an editor)?
from Binette@lemmy.ml to linux@lemmy.ml on 25 Jul 2024 20:21
https://lemmy.ml/post/18404363

#linux

threaded - newest

thingsiplay@beehaw.org on 25 Jul 2024 20:27 next collapse

What you are looking for is called Syntax Highlight. Are you asking this for the terminal? I think this is a property of the shell. Fish has it builtin and for ZSH, there is a plugin: github.com/zsh-users/zsh-syntax-highlighting I don’t know if its possible with Bash.

bubstance@lemmy.sdf.org on 25 Jul 2024 20:34 next collapse

Closest thing for bash would be ble.sh.

Binette@lemmy.ml on 25 Jul 2024 21:20 next collapse

Tried it out and it works! Thanks!

t0mri@lemmy.ml on 26 Jul 2024 03:42 collapse

Yeah, I used to use that before. But its slower for me. So now I use fish for interactions

theshatterstone54@feddit.uk on 26 Jul 2024 07:15 collapse

Yeah, it’s slow. I use it currently (because of better vi mode support) but plan to switch back to zsh.

Binette@lemmy.ml on 25 Jul 2024 20:36 collapse

Yes, I am looking for a syntax highlighter for the terminal. The one I use is called Kitty.

hallettj@leminal.space on 26 Jul 2024 13:32 collapse

It would make sense for the terminal to handle syntax highlighting since that would match how editors work. But the convention is that the shell handles highlighting, not the terminal. You can check which shell you are running with the command,

$ echo $SHELL

It’s done that way because the shell is a running program that is capable of telling the terminal which colors to show (by mixing color escape sequences into text). Compare that to code in an editor which is text, not a running program so the only option is for the editor to handle highlighting[1]. Editors need syntax files to configure highlighting for all the different programming languages, while terminals don’t need this because the shell tells them what colors to show.

[1] setting aside the “semantic highlighting” LSP capability - that was invented long after syntax highlighting conventions were established

[deleted] on 25 Jul 2024 21:13 next collapse

.

gamma@programming.dev on 25 Jul 2024 22:34 next collapse

zsh-syntax-highlighting

There’s also a fork called fast-syntax-highlighting, I use it.

gomp@lemmy.ml on 26 Jul 2024 06:17 collapse

Powershell does this on Windows. May also work on Linux?

Yes: …microsoft.com/…/installing-powershell-on-linux

Should you choose to install it, it will bring the total of people running powershell on linux to one :)

(I’m kidding, of course, more or less)

[deleted] on 26 Jul 2024 08:31 collapse

.

gomp@lemmy.ml on 27 Jul 2024 15:17 collapse

Never used powershell (thanks heavens, I’ve not touched windows since windows 7). Is it similar to nushell?

[deleted] on 27 Jul 2024 15:42 collapse

.

boredsquirrel@slrpnk.net on 25 Jul 2024 21:33 next collapse

Fish shell

You can change the used shell in the configs. At least for Alacritty, when I used it (dont care, it was still kinda broken, I just use Konsole)

CsXGF8uzUAOh6fqV@lemmy.world on 25 Jul 2024 21:49 collapse

Interesting, I never heard of setting your shell in the emulator config. I just used ‘chsh’ once when I setup the install.

boredsquirrel@slrpnk.net on 25 Jul 2024 23:27 collapse

Yeah please dont use chsh.

Zsh may work, dash (which is a faster, smaller reimplementation of bash) may work.

But fish absolutely doesnt.

Just because you want to have a nice writing experience, that doesnt mean your whole OS needs a different shell.

I will experiment with dash though. Ubuntu uses it as the root shell, so it is really well tested.

priapus@sh.itjust.works on 25 Jul 2024 23:35 next collapse

What do you mean by won’t work? chsh is not changing the shell of the entire OS, it’s changing your users login shell. Unless you’ve done something to make your login break without bash, this is completely fine. Using chsh is even how the Fish docs recommend setting it as your default.

What Ubuntu did isnt about login shells, they replaced /bin/sh with dash, meaning any scripts that try to use sh will instead use dash.

boredsquirrel@slrpnk.net on 26 Jul 2024 01:51 collapse

Thanks for the heads up.

sparr@lemmy.world on 25 Jul 2024 23:38 collapse

please dont use chsh

doesnt mean your whole OS needs a different shell

chsh just changes the shell when you log in to a shell. all the other shells are still available and usable. any script starting tieh #!/bin/bash will still run with bash, even if you’re using zsh or fish.

boredsquirrel@slrpnk.net on 26 Jul 2024 01:49 collapse

Yes bash scripts still work, but I heard there may be other things that randomly break.

Many things use #!/bin/sh for example, which often is a link to bash, but may not work anymore.

lelgenio@lemmy.ml on 26 Jul 2024 04:13 collapse

chsh does not modify /bin/sh

Maybe you’re thinking of a certain video from a certain YouTuber who linked /bin/sh to fish?

boredsquirrel@slrpnk.net on 26 Jul 2024 16:28 collapse

Haha no didnt think of that? Hm, I dont know why it would be an issue then. POSIX compliant shells should be no problem, but I wouldnt do it for fish

billgamesh@lemmy.ml on 27 Jul 2024 02:44 collapse

It will never matter what your login shell, unless you have bash specific scripts in your login. chsh -s /bin/fish $(whoami) is fine.

Bruhh@lemmy.world on 25 Jul 2024 21:51 next collapse

Fish

leo85811nardo@lemmy.world on 25 Jul 2024 23:27 next collapse

If you use zsh, there is zsh syntax highlighting plugin. For bash, a cursory search gave me ble.sh which looks interesting. And as other threads have mentioned, fish shell has this built in, but beware fish shell syntax works drastically differently from other POSIX shells

gomp@lemmy.ml on 26 Jul 2024 06:14 next collapse

beware fish shell syntax works drastically differently from other POSIX shells

Come on, that’s scaremongering :)

On interactive, day-to-day use, fish syntax is basically the same as bash or any other shell: you type your commands, hit enter and the command is run. Only when it comes to scripting (or writing complex one-liners, or copy-pasting stuff from the web) are there appreciable differences. In those cases, until one is accustomed to fish, running the command/script in bash is still an option.

Let me be 100% clear: yes, fish will complain if a wildcard doesn’t expand to anything, and there are other minor things that may impact typical interactive use. I’m just saying there is basically zero learning curve if you want to try fish and that you can just fire up bash if you hit a wall in a moment when you can’t afford to investigate because you need stuff done.

If I had to say, the most hassle with fish is that people assume you are running POSIX shell and so you have to know how to adapt instructions to your shell. For example, someone may say “add expor SOME_VAR=some_value to your .bashrc” and you need to be able to translate that to fish. Also, there is very specific software (in my system, it’s just sdkman, an utility that manages which java development tools are installed/available in a shell session) that only works in POSIX shells and needs some adapter for fish.

leo85811nardo@lemmy.world on 26 Jul 2024 10:27 collapse

Having to adapt to shells is exactly why I don’t like to use radical shells like fish or nushell. I don’t want to feel too comfortable with them, because if I do, I would probably regret it when I’m stuck in situations that doesn’t have the correct shell. SSH into a new server or Raspberry Pi that has DNS issue, for example, which actually happened to me more than once. The DNS is already troublesome, and I don’t want shell unfamiliarity to become another headache

gomp@lemmy.ml on 27 Jul 2024 15:14 collapse

Well, it’s not like by learning fish you’ll automatically forget bash :) but I do agree that you should learn bash first, then plain sh and only after those go explore other shells.

I love how “radical shells” sounds! :)

theshatterstone54@feddit.uk on 26 Jul 2024 07:09 collapse

I’ll be honest, I use bash and the only benefit using ble.sh has over zsh, is that vi(m) mode is better than zsh. For example, more complex commands like di" (delete inside ") don’t work in zsh, but work in bash with ble.sh. Also, I found ble.sh far more complicated and took me a while to get it configured. Even now, some completions, especially tab completion, isn’t as good in bash as in zsh. In fact, the only issues I had with zsh compared to ble.sh were vi mode related. More specifically, the aforementioned lack of advanced vi(m) mode commands, and the limited support for showing the current vi mode in the prompt, for example for Visual mode (Normal and Insert mode seem to be the only ones to work).

So if you need advanced vi(m) mode, get ble.sh configured. Otherwise, go for zsh.

ssm@lemmy.sdf.org on 26 Jul 2024 07:08 next collapse

adjust the knobs on your terminal until the shade of green or yellow is pleasing

Andy@programming.dev on 27 Jul 2024 02:34 next collapse

I suggest trying this one for Zsh, over the more common one: github.com/…/fast-syntax-highlighting

Cube6392@beehaw.org on 27 Jul 2024 15:58 collapse

Yes! Zsh-syntax-highlighting is a starting point to look at. You can also use fish shell