4 ms·
I recently discovered VisiData and I'm on a huge TUI kick right now because of it. I know GUIs have their advantages and I use them, but opening a file in vim
by Timpy 5y ago
I recently discovered VisiData and I'm on a huge TUI kick right now because of it. I know GUIs have their advantages and I use them, but opening a file in vim or VisiData at light speed feels so good compared to firing up IntelliJ or some spreadsheet program. Good keybindings make working in the program a joy. These tools are often made by hackers/for hackers, not some corporate structure trying to pad their resume with whatever new feature looks good but works like shit that nobody asked for. When people developing the tool are also using the tool you get a good tool; this isn't exclusive to TUIs but it's common and it's one of the reasons that when they work they work so well.
https://www.visidata.org/ https://www.visidata.org/
- jwiz 5y agoFinding visidata was like when I first learned about pivot tables, only better.
- moring 5y agoIf IntelliJ was as fast as vim or VisiData, and as a bonus totally scriptable (I think it is to some extent, but just for fun let's assume you could change everything), which would you prefer then?
- seanw444 5y agoVim and Visidata. Emacs, actually. Open source rules all in my book.
- eulgro 5y agoIntelliJ is open source.
- seanw444 5y agoSorry, wrong term. I meant FOSS. There is some software I can justify paying big bucks for (although the list is getting increasingly shorter thanks to better and better FOSS projects). But Emacs with zero licenses at all, and being the most customizable text editor on the planet? Vim, with the most innovative and speedy keybindings? What a steal. Don't get me wrong, JetBrains has some cool stuff. It's nice to see they're working on a lighter-weight text editor to add some competition to the newbie-friendly text editor market. And JetBrains Mono is a phenomenal monospace font.
- badsectoracula 5y agoFOSS = open source :-P (the OS in FOSS is Open Source). IntelliJ is open source/FOSS/FLOSS/Free Software, etc, here is the code[0], license is Apache 2.0. [0] https://github.com/JetBrains/intellij-community https://github.com/JetBrains/intellij-community
- seanw444 5y agoYeah, I know what FOSS stands for. I really, really commend JetBrains for having an open source edition. I just prefer an editor that doesn't separate features into pricing categories like Community, Ultimate, etc. I understand they have to make money as a company somehow, and that's totally fine. I just personally don't like the idea. Emacs does all I need, and more, with a single edition, and a single small fee of: zero dollars.
- Timpy 5y agoIf IntelliJ was as fast as vim, as lightweight as vim, preinstalled on every machine that I use, fully accessible over ssh, as scriptable as vim (or had perfect vim emulation as a plugin), free, I could install all of my preferences with just some dotfiles, and I need an IDE for the project, then I suppose it would just make sense to use IntelliJ at that point. Sometimes you just need a text editor though.
- mekster 5y agoThe new Fleet is supposed to be very fast. Haven't tried the beta invitation yet though. https://www.jetbrains.com/fleet/ https://www.jetbrains.com/fleet/
- doix 5y agoThe value of IntelliJ (in my opinion) is the deep semantic processing of the language you are using to provide useful information/refactoring/linting capabilities. It blows the equivalent LSP stuff out of the water (or at least it did last time I tried it with Kotlin). As an editor, I really hate it coming from vim. Even with vim mode, it sits in the uncanny valley for me. It's pretty close to vim, I'd say 95% of the stuff works as I'd expect, but the last 5% is jarring. My biggest annoyances are: * The undo behavior is insane, I'm constantly double-tapping u, because undo brings your cursor back to your last edit, but doesn't undo it. Unless your cursor is already where it should be, then it will undo. So it's uu then ctrl+r (sometimes). * They don't have vim tabs (I don't think any modern IDE does). I'm constantly closing and reopening splits, it drives me crazy. * There's no toggle fold, gotta explicitly unfold/fold. That muscle memory is stuck with me now, even in vim which makes me sad. * Moving between the different panels is not the same as moving between different splits. You need to memorize the hotkey for each panel and then the hotkey to get back to the code, it feels extremely unnatural. The vim hotkeys are hit or miss in the different panels as well. Despite all that, I still used it when I was working on a Kotlin codebase. I wish it was possible to extract their language processing stack and use it in vim to have the best of both worlds.
- mekster 5y ago> * The undo behavior is insane, I'm constantly double-tapping u, because undo brings your cursor back to your last edit, but doesn't undo it. Unless your cursor is already where it should be, then it will undo. So it's uu then ctrl+r (sometimes). This is a much better way than stock vim. In vim, if I scroll elsewhere and undo, it jumps back to the last edit and already undone the edit and sometimes I'm not sure what got changed but in IntelliJ it jumps back first, so I can see what will change before it gets undone and also I can just use 'u' whenever I want to go back to the last edit's position.
- doix 5y agoI guess it depends what your typical case for undo is. For me, 99% of the time I remember the changes I made an want to undo them, so pressing a button twice is annoying, especially since it's not consistent. If I don't remember what I was doing, then I can press ctrl+r to redo and see what changed, but to me that is the exception and I'm fine taking extra clicks to do it. Everyone has preferences, I wish this was configurable :P. > also I can just use 'u' whenever I want to go back to the last edit's position. I use ctrl+o for this.
- wutbrodo 5y agoI'm probably one of 2% of eng at my company who use vim instead of vscode, and not being able to run it in a terminal is the primary dealbreaker for me. My dev workflow consists of 4-6 screen sessions with 3-5 terms each. Each one represents one "task" (usually a branch), and I use git worktrees to keep separate copies of the repo that are linked at the git object level. An IDE that insists on being a GUI makes me feel like I'm using a toy OS like Windows. As a bonus, this is a remote-native setup, which made covid trivial to adapt to. I'm exactly as productive in the office as I am at home or on planes or in Ubers or at wine bars on sunny afternoons (modulo extra screen real estate).
- wiz21c 5y agoVisidata's font logo reminds me of VisiCalc advertisements back in the days... Ahhh a quick look at wikipedia says I'm right :-)
- wiz21c 5y ago"Scatterplots in the terminal", that's some serious geekiness :-)
- eesmith 5y agoGnuplot has had it for at least 30 years. gnuplot> set term dumb Terminal type is now 'dumb' Options are 'feed size 79, 24 aspect 2, 1 mono' gnuplot> plot sin(x) 1 +--------------------------------------------------------------------+ | * * + * ** + * * | 0.8 |-+ * * * * sin(x* *******-| | * * * * * * | 0.6 |-+ * * * * * * +-| | * * * * * * | 0.4 |*+ * * * * * *+-| |* * * * * * * | 0.2 |*+ * * * * * *+-| | * * * * * * * | 0 |-* * * * * * *-| | * * * * * * *| -0.2 |-+* * * * * * +*| | * * * * * * *| -0.4 |-+* * * * * * +*| | * * * * * * | -0.6 |-+ * * * * * * +-| | * * * * * * | -0.8 |-+ * * * * * * +-| | * * + ** * + * * | -1 +--------------------------------------------------------------------+ -10 -5 0 5 10
- dredmorbius 5y agoAs have other tools. R and its inspiration S had these, SPSS, SAS, SPlus, and who knows how many other stats programs over the decades, going back to the 1970s or even 1960s, mostly under Unix and mainframe platforms. I've even written my own simple barplot program in awk for generating quick-and-dirty comparisons in shell scripts.
- gorgoiler 5y agoIt is a little more niche but the inclusion of braille in Unicode and it’s impact on ascii art is comparable to IE’s XmlHTTPRequest, in terms of unexpectedly transformative moments in software history.
- globular-toast 5y agoIt's funny because displaying bitmaps in a terminal-like interface has been possible for many years. Even TempleOS[0] can do it! But somehow it's just never caught on. But the unicode thing works because it gets shoehorned into existing standards and functionality. Legacy is a bitch. "The things you own end up owning you". Makes me wonder, though, is there enough space in unicode to just encode every possibly 16x16 bitmap? 256 bits? [0] https://en.wikipedia.org/wiki/TempleOS https://en.wikipedia.org/wiki/TempleOS
- demetrius 5y ago> Makes me wonder, though, is there enough space in unicode to just encode every possibly 16x16 bitmap? Space is not an issue here. You can do with very few characters, just make them combine with each other, like ˩˥ is encoded as ˩+˥, flags are encoded as combinations of two letters, etc. So, you can just have 256 characters for each bitmap dot and make them combine with each other. Or have 16 characters and make them combine (maybe using zero-width joiner). I think the biggest problem is actually getting this thing into Unicode. Emoji got codified because some Japanese phone encodings included them. But it would be harder to justify arbitrary bitmaps.
- jl6 5y agoOr you could just have two new code points representing 1 and 0, which are only valid in sequences of length 256. Really stretches the meaning and purpose of a character encoding though…
- CRConrad 5y ago> flags are encoded as combinations of two letters, etc. Up to four (or more?) in some cases. Example: The flag of Scotland, that's a four-character combo IIRC.
- globular-toast 5y agoI've wanted something like this for ages. In fact I wanted something much simpler: just the ability to pipe tabulated data from a script into something and display it in tabular format. I wrote my own at some point but found too many quirks for it to be useful. Visidata can do what I need and much, much more. Awesome!
- darrenf 5y ago> just the ability to pipe tabulated data from a script into something and display it in tabular format Not 100% sure I understand your requirement, but does `column` fit the bill? $ echo -e "foo,bar,quux\n1,2,3" | column -t -s, foo bar quux 1 2 3
- ipdashc 5y ago`column` is nice, but fails on empty cells and cells with escapes or quotes
- globular-toast 5y agoYeah, `column | less -S` works fairly well but empty cells and escaping etc. turns up too often. It essentially means you need a proper CSV parser, which is non-trivial. The other common problem was long values making the output unreadable. Some kind of default truncation is essential.
- darrenf 5y agoI agree `column` is imperfect, but empty cells at least don't seem to be a problem. $ echo -e 'foo,bar,quux\n1,,3' | column -t -s, foo bar quux 1 3 The man page says: > Version 2.23 changed the -s option to be non-greedy Elsewhere on an ancient Ubuntu I have lying around, `-n` did the same: -n By default, the column command will merge multiple adjacent delimiters into a single delimiter when using the -t option; this option disables that behavior. This option is a Debian GNU/Linux extension.
- ajoseps 5y ago
- chrisweekly 5y ago100% agreed. Also VisiData looks cool, thanks for the link. In this space, I'm a huge fan of Lnav (https://lnav.org https://lnav.org) which fits similar use cases as a TUI / CLI for ETL workflows (w embedded SQLite), works great at the scale of a few millions of rows.
- seanw444 5y agoOh, Lnav is very cool. Thanks for sharing.