4 ms·
I like Elvish. It's clean, consistent and stable. Writing a shell script in Elvish is so much more productive and simpler than, say, bash. There are are also fe
by sidkshatriya 2y ago
I like Elvish. It's clean, consistent and stable. Writing a shell script in Elvish is so much more productive and simpler than, say, bash. There are are also fewer pitfalls and tricks you need to master.
The Elvish shell language doesn't change much which is nice nowadays. The Elvish executable has also got a built-in lsp which is another nice touch.
Finally it is a "proper" shell because it has job control (which other new age shells like nushell don't).
P.S. I like nushell too which has got more features, is more powerful but is still evolving. Maybe in a couple of more years it will stablize like Elvish already has. There are lots of similarities between Nushell and Elvish scripting language. I would recommend either of them.
- xiaq 2y agoHey, thanks for the compliment! Glad you've enjoyed Elvish. Re job control - you can run a background job with &, and there are fg and bg commands, but you can't actually ^Z a running program (which is what most people mean by job control). I've heard people have success with https://github.com/yshui/job-security https://github.com/yshui/job-security though. Re Elvish and Nushell, I'd add my biased recommendation for Elvish because it has comprehensive reference documents (https://elv.sh/ref/ https://elv.sh/ref/) :)
- sidkshatriya 2y agoThe documentation of Elvish is indeed top notch. I also like the self contained nature of the project. Elvish is like a beautiful tool in your arsenal while nushell is a powerful but perhaps too feature-full scripting language. An imperfect analogy: Elvish is like a compact OCaml while nushell is more like a Haskell or C++ of the scripting world !
- mst 2y agoI'm afraid I really need ^Z, %-, %3 and %foo for interactive use. See e.g. the top-right xterm in https://trout.me.uk/screenshot3.jpg https://trout.me.uk/screenshot3.jpg for why. Tried to switch to a ksh for a while and ran face first into that, though OpenBSD ksh has added it so I may attempt that one at some point. (tabs don't fit my brain nearly as well and https://github.com/n-t-roff/heirloom-ex-vi https://github.com/n-t-roff/heirloom-ex-vi is my usual editor and doesn't provide anything of that ilk anyway ... I may be an outlier ...) The syntax and semantics seem really rather nice though, I may attempt elvish for scripting at some point.
- tambourine_man 2y agoTraditional Vi? I thought I was hardcore. Certainly an outlier, in a good way :)
- mst 2y agoIf I'm on somebody else's system and need to hit the ground running Right Now then this comes into play instead - https://trout.me.uk/X11/vimrc https://trout.me.uk/X11/vimrc (I think it's been a few years now since I've been annoyed enough by something in vim to figure out how to turn it off and add yet another line to that ;)
- nocman 2y agoOut of curiosity, why bother to unmap the cursor keys? I don't ever use them in vim either, but is there something that is prevented from working with having them mapped in vim?
- baobun 2y agoIt can be useful to crush old habits. Also very useful if you do a lot of context switching or are an occasional user, to make sure your brain and fingers are in "vim mode" (at least one other line in the file makes this rather obvious) And once it's there, why bother removing it? I think you are in minority if you actively prune your vimrc for dead config...
- mst 2y agoI never had those habits, though I have passed that stanza on to people who were just learning to help remind them to use hjkl. I just tend to turn off things I only ever hit by accent (see also the :h override).
- mst 2y agoBecause I don't ever hit them except by accident while using vi(m) so disabling means an accidental keypress does nothing rather than something I didn't want. (my main reason for preferring original ex-vi is that when I typo a command, it beeps at me, whereas in vim the typo is usually some completely unrelated but valid command sequence and then WTF JUST HAPPENED and argh)
- hnlmorg 2y agoMurex has had job control support for literally years too. There’s actually a lot of parallels between murex and Elvish. Both projects started around the same time, both written on Go. Both support structured data and smart data types. The syntax differs a little between them two but concept wise they’re similar in a number of ways. I as (project author) just don’t do a particularly good job promoting murex. In part because I’d never want to force my own shell preferences onto others. But It’s good that there’s so much choice these days and people aren’t stuck with the archaic decisions of the 70s
- xiaq 2y agoHiya! I, for one, would definitely welcome more promotion of Murex! (Also just checked out Murex's website again, seems we reworked the style of the respective homepages around the same time :)
- hnlmorg 2y agoYour new website is nice. Particularly on mobile too, but even just generally. Though to be fair, I've always been impressed with your website layout -- even on the previous one. I can't take any credit for Murex's site, it was a user who doesn't write Go but wanted to contribute in other ways. Open source is definitely a double edged sword but I'm still always surprised and impressed with how much time people are willing to invest into other peoples projects if they like them. By the way, one killer feature of Elvish that I admire and think doesn't get talked about enough is how exceptions are raised in pipes. eg: ~> cat example | grep foo | grep bar Exception: (<nil> | grep exited with 1 | grep exited with 1) It's really neat how you do that. It's readable, detailed, and valuable to the user.
- xiaq 2y agoThank you for the compliment!
- wg0 2y ago> does not change much so you mean no async await, no union types, no type hinting, no lambdas etc etc. Kidding, I'll give it a try. Can it replace one's shell as daily driver?
- xiaq 2y agoYes! I haven't been using it as my daily driver for almost 10 years now. There are detailed instructions on how to get it and use it as your default shell in https://elv.sh/get/ https://elv.sh/get/.