| ▲ | felineflock a day ago |
| I appreciate the effort that went into writing the article but it conflates different concepts missing some historical context and technical distinctions. For example, TUI (text user interface) and CLI (command-line interface) are quite different. "CLI Text Editor" sounds more like someone editing a file using ECHO commands. This new editor is actually a reimplementation of the classic MS-DOS 5 EDIT program from 1991. At that time, VIM was still very new, so "VIM memes" weren't yet part of the tech landscape. Before VIM, there was vi. In Usenet posts - about 15 years before Google - people used to add a pithy humorous sentence at the bottom called "tagline" - here is one: "How do you exit vi? Reboot the system." And Notepad was not the only option for Windows devs. We've had EDIT, DR-DOS EDITOR, Brief, WordPad, EditPad, Notepad++, and more. |
|
| ▲ | skissane 9 hours ago | parent | next [-] |
| > This new editor is actually a reimplementation of the classic MS-DOS 5 EDIT program from 1991 MS-DOS 5 EDIT is actually just a stub which runs QBASIC in editor mode, in which all the BASIC-related features are disabled. Windows 95 EDIT was different, it actually had BASIC removed from the binary. I don't know if it was a rewrite or if they just deleted (or even #ifdef-ed) out the BASIC parts out of the source code. QBASIC was basically just a cut-down build of QuickBASIC with some features disabled. The TUI part was provided by the "Character Windows" (aka "Character-Oriented Windows", CW or COW) library, a TUI-mode analog to the Windows 3.x API for DOS TUI apps, it was also used by some other Microsoft products such as Word for DOS. It would be great were Microsoft to open source it (although from what I've heard, significant chunks of this stuff have already been included in various leaks of DOS and Windows source code, but it would be nice to have it publicly available in a completely kosher way) |
| |
| ▲ | pico303 2 hours ago | parent | next [-] | | The target market for this editor seems infinitesimal. Who on Windows these days groks the terminal on Windows, wants a terminal editor instead of Notepad++ or VSCode, and finds Neovim overwhelming? And certainly no one on Ubuntu is looking for this. That said, give me QuickBasic back in the terminal on Windows, Mac, and Linux, and now you’ve got my attention… | |
| ▲ | donatj 3 hours ago | parent | prev [-] | | > QBASIC was basically just a cut-down build of QuickBASIC with some features disabled Huh, I've wondered about the difference for the last 30+ years. | | |
| ▲ | mattl 2 hours ago | parent [-] | | QuickBASIC, Visual BASIC for DOS and PDS (Professional Development System) all had some variation on the same design. PDS has QuickBASIC Extended. I briefly worked with them. |
|
|
|
| ▲ | marttt a day ago | parent | prev | next [-] |
| I've long quit using vim on a daily basis, but the "how to exit Vim?" jokes are still somehow funny. A recent encounter was an old tweet by @iamdeveloper: "I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it." :wq (sorry, I had to). |
| |
| ▲ | pjio a day ago | parent | next [-] | | Quitting vim isn't about exiting the program, which can easily be done with :!kill -9 $PPID | | | |
| ▲ | Jenk a day ago | parent | prev | next [-] | | `ZZ` to save and quit, `ZQ` to quit without saving. Sorry, I can't help myself. | | |
| ▲ | Brian_K_White a day ago | parent | next [-] | | I've always used :x or :x! and no longer remember why. Probably it's a bad idea like without actually looking right now I think it might mean to ignore permissions (if you're root enough) and just write even if perms would have blocked it. Hm, maybe x means wq and just the ! means force. | | |
| ▲ | mklein994 a day ago | parent [-] | | It's actually a bit more nuanced: `:x` is like `:wq`, but only writes if changes have been made. `:x!` has the same semantics as `:wq!`. | | |
| ▲ | BoiledCabbage 20 hours ago | parent | next [-] | | The fact that everyone says the meme is dead, but in this small thread there are 5 different people posting how to exit, and none of them are the same says there is still pretty good substance behind that meme. | | |
| ▲ | Brian_K_White 18 hours ago | parent [-] | | I think we're all kind of implicitly acknowledging the truth of the meme. I mean that was definitely a conscious part of my own comment. |
| |
| ▲ | humanperhaps a day ago | parent | prev [-] | | I feel like the default behavior should be to not write unless changes have been made. I may be misunderstanding here, but what would be getting written if nothing's been changed? | | |
|
| |
| ▲ | entelechy0 21 hours ago | parent | prev [-] | | [dead] |
| |
| ▲ | EFreethought 2 hours ago | parent | prev [-] | | I think sysadmins should install nano on servers for people to make quick edits. All the commands are along the bottom, so there is no learning curve. |
|
|
| ▲ | Jenk a day ago | parent | prev | next [-] |
| Before vim was vi. Befote vi was ex. (Before ex was ed - the first editor for unix) Vim has ex built in - `Q` in normal mode to enter Ex mode, 3-5 command lines will show at the bottom and you can Ex away. I don't know of practical uses, I've only done it for the novelty. Obligatory: To exit Ex mode use `:vi[sual]` - and that's probably where Vi got its name. |
| |
|
| ▲ | abhgh a day ago | parent | prev | next [-] |
| I noticed the conflation of terms too but it seems to arise out of the original Microsoft announcement! https://devblogs.microsoft.com/commandline/edit-is-now-open-... |
|
| ▲ | rozab 2 hours ago | parent | prev | next [-] |
| The term CLI has just come to mean "in a terminal" for a certain subculture, e.g. https://github.com/agarrharr/awesome-cli-apps People do know the technical difference, it's just a shorthand |
|
| ▲ | hk1337 21 hours ago | parent | prev | next [-] |
| > This new editor is actually a reimplementation of the classic MS-DOS 5 EDIT program from 1991. I remember editing the AUTOEXEC.BAT in that thing as well as writing my own BAT files and QBASIC. |
|
| ▲ | bee_rider a day ago | parent | prev | next [-] |
| Does the exclamation point work in vi, like vim? So the way to exit is to do: :!killall vi Of course. For a cli text editor, ed would qualify, right? |
| |
| ▲ | diggan a day ago | parent | next [-] | | > For a cli text editor, ed would qualify, right? It'd still say ed is more of a TUI than CLI, albeit kind of old-school since it doesn't redraw the screen, just continuously show output and let you enter commands. Maybe "REPL" comes closer, because it's not interactive in the typical TUI way. | | |
| ▲ | layer8 a day ago | parent | next [-] | | I fail to see the difference between REPL and CLI here. Any line-based interactive interface where you type commands is a CLI, like for example the ftp or mysql clients in interactive mode. Or, indeed, ed. | | |
| ▲ | MobiusHorizons a day ago | parent | next [-] | | Personally I usually make the distinction based on whether the process has to switch the tty to raw mode and overwrites the full screen (typically using ncurses), but it sounds like the person you are replying to makes the distinction in whether the program needs user input while executing. I guess such programs are more likely to work in pipelines or shell scripts | | |
| ▲ | layer8 a day ago | parent [-] | | Unix shells “need user input while executing” in that sense. A program not being a Unix shell doesn’t make it non-CLI. A shell constitutes a CLI due to its interactive line-based user interface. Any other program with such an interface counts as being a CLI program for the same reason. |
| |
| ▲ | kristjansson a day ago | parent | prev | next [-] | | Could you run it on an actual teletype without consuming an entire forest worth of paper? That’s a CLI. Otherwise it’s a TUI. | | |
| ▲ | layer8 a day ago | parent [-] | | I don’t agree, it’s consecutive line output vs. screen-based rendering and repositioning. Regardless, ed was developed for and used on actual teletypes. It’s entire interface is geared towards that usage. | | |
| ▲ | Brian_K_White a day ago | parent [-] | | I think ed also served the function of sed and patch. Ie you could record a bunch of edits into a file and it could read the script and perform all the edits to some input file. So it was more useful than an interactive line based editor sounds. | | |
| ▲ | layer8 21 hours ago | parent [-] | | This is the same distinction as between running commands with bash -c (or just by executing a regular Bash script) and running them manually in an interactive Bash session. It’s pretty much an inherent feature of command-line interfaces that you can script them. | | |
| ▲ | Brian_K_White 16 hours ago | parent | next [-] | | Wasn't intended to be a distinction but an aside. But as to that, it's slightly different than merely being able to play back a recording of commands. It IS that, but that can be applied in a way that acts more like the examples I said like sed or patch, or expect, where the script can apply some funcion to different inputs, not just playing back a recording. I'm not denying the implimentation, how the job gets done, is technically still just a recording of commands. | |
| ▲ | lern_too_spel 8 hours ago | parent | prev [-] | | It's different. Grep was a function of ed ('g/re/p') that was later extracted into its own program to search files that could not fit in memory. Sed then came along and implemented the 's/re/substitution/' functionality from ed for the streaming use case. |
|
|
|
| |
| ▲ | Brian_K_White a day ago | parent | prev [-] | | They are obviously "command line interfaces" in that the interface is that you enter lines of commands. They are equally obviously different from the non-interative interface where all input is provided in the command line arguments and other shell syntax (pipes, redirection). ls is a cli app. bash is an interative app that provides the cli environment in which you use ls. I fail to see what is gained by trying make the meaning of "cli app" unclear when it definitely has an understood meaning, just because you can technically assemble the same words to mean other things. Sure in certsin contexts where you are speaking more geneticslly and more abstractly like in some research paper you may refer to a wide range of things all as "command line interface". But so what? How does noting that help in this context? (It does not) | | |
| ▲ | layer8 21 hours ago | parent [-] | | I disagree that it is well-understood in the way you describe. I agree that there are two distinct concepts: 1. Programs that can be run as a CLI command, often without further user interaction (but consider cases like rm -i, which are quite common), and 2. programs that expose their functionality by providing their own interactive CLI. In the case of 1, the program’s argument syntax can be referred to as the program’s “command-line interface”. But the abbreviation “CLI” usually means the interactive interface as in 2. The latter is analogous to the notion of how TUI programs provide their own interactive interface. When making the distinction between CLI and TUI, it’s the latter that is meant, i.e. is it a line-oriented or screen-oriented user interface. Saying “CLI editor” doesn’t imply that the editor commands are necessarily invoked as non-interactive shell commands, as opposed to the editor providing a CLI of its own. Technically, every program can serve as a “CLI command”, since you can invoke it with arguments. However, “command line” is generally understood to mean the user interface where the user types commands, as opposed to non-interactive program invocation. When invoking a program with arguments from another program with exec or similar, you don’t call that a CLI. |
|
| |
| ▲ | Jenk a day ago | parent | prev | next [-] | | Ed was designed in an age where the visual interface was a printer - so it is most assuredly a cli tool :) | |
| ▲ | a day ago | parent | prev | next [-] | | [deleted] | |
| ▲ | hamburglar a day ago | parent | prev | next [-] | | Is it actually important that we come up with a formal definition of these things, though? They are colloquial terms, there is some overlap, and people are always going to use one or the other “incorrectly” according to you. It’s more important that we recognize that’s a potential source of differing terminology and ignore that rather than fixating on it. | |
| ▲ | WD-42 a day ago | parent | prev [-] | | Not sure why you are downvoted this is entirely correct | | |
| ▲ | spauldo 15 hours ago | parent [-] | | Probably because most of us don't think it's correct at all. TUI apps aren't common anymore, which adds to the confusion as a lot of people didn't grow up with them and don't grasp the difference. A TUI app takes control of the terminal and redraws different parts of the screen to present a consistent, non-scrolling experience. If you've ever used a system where your interface was an IBM 3270 emulator (or better, an actual 3270 terminal), that's TUI. vi/vim and non-GUI Emacs are also TUI. A CLI app just prints its output at the cursor and the output scrolls off the top of the screen as you go. The Bourne, Korn, Bourne Again, and C shells are all CLI, as are most REPLs and the majority of interactive non-GUI UNIX programs (including ed) these days. |
|
| |
| ▲ | rbanffy a day ago | parent | prev | next [-] | | MS-DOS had edlin, which was their own take on ed. They never made a firm commitment, however, to make edlin the standard editor. | | |
| ▲ | aforwardslash 18 hours ago | parent [-] | | Edlin was the standard editor in dos 3.x. As far as I can remember, edit came later (dos 4.x-5?) | | |
| ▲ | rbanffy 16 hours ago | parent [-] | | I don’t remember any tools that output edlin commands that could be piped to it the same way it’s done with ed. |
|
| |
| ▲ | roryirvine a day ago | parent | prev | next [-] | | for maximum excitement, try that killall method on a SysV unix... | | |
| ▲ | spauldo 15 hours ago | parent [-] | | Ye gods, I had managed to bury that memory! Went from Slackware to Solaris, and then used killall while teaching a UNIX class. Everyone got a laugh and a smoke break, and I got knocked down a peg. |
| |
| ▲ | a day ago | parent | prev [-] | | [deleted] |
|
|
| ▲ | JdeBP a day ago | parent | prev | next [-] |
| Interestingly enough, the weird re-boosting to get more views thing that Hacker News sometimes does is making it seem like I said all of that 5 hours ago. * https://news.ycombinator.com/item?id=44310682 Instead of 2 days ago when I actually wrote it. (-: |
|
| ▲ | WalterBright 18 hours ago | parent | prev | next [-] |
| Don't forget MicroEmacs! I've been using it ever since it floated around usenet in 1985 or so. |
| |
|
| ▲ | reaperducer a day ago | parent | prev | next [-] |
| In Usenet posts - about 15 years before Google - people used to add a pithy humorous sentence at the bottom called "tagline" We always called them "signatures." They were even stored in a file named .sig. |
| |
| ▲ | felineflock a day ago | parent | next [-] | | The tagline was below or at the end of the signature. They were stored separately in a list and there was software that would pick one of them randomly to add to the signature when posting. | |
| ▲ | invaliduser a day ago | parent | prev | next [-] | | taglines where witty one-liners posted at the end of messages, after the signature, as a way to add a bit of humor or personality. I think we also used them in fidonet echomail, but I don't remember for sure. | | |
| ▲ | JdeBP a day ago | parent | next [-] | | The problem is that the nomenclature and conventions differed, and this many years later people tend to conflate them. BBS networks like ILink had tearlines, optional taglines, and mandatory origin lines. FidoNet had tearlines and origin lines because it shared roots and sometimes nodes with the BBS networks; so they were there for compatibility. Usenet mainly had signatures, with all of its equivalents to the other stuff in headers. * http://ftsc.org/docs/fts-0004.001 | |
| ▲ | int_19h 8 hours ago | parent | prev [-] | | In echomail they were known as "Origin" because the intended purpose of that line was to identify the originating node. It looked like this: * Origin: any random text (12:34/56.78)
The text was supposed to be the name or description of the node, but this wasn't mandated by the rules, and the address at the end unambiguously identified the node anyway for anyone who cared, so people quickly repurposed it for taglines. |
| |
| ▲ | angled a day ago | parent | prev [-] | | ^H^H^H^Hsignature |
|
|
| ▲ | snozolli a day ago | parent | prev | next [-] |
| TUI (text user interface) I find it interesting that everyone is using TUI when I've always seen CUI (Character User Interface). I come from a DOS and Windows background, and it seems like TUI comes from the *nix world. And Notepad was not the only option for Windows devs. Dr Dobbs and other tech magazines used to have ads for a variety of editors. And linkers, which were the bane of 80s programmers' lives. There was a whole era of programmer-oriented software that seems to have been largely forgotten. |
| |
| ▲ | layer8 a day ago | parent [-] | | My understanding is that CUI includes both TUI and CLI, and refers to the interface of a text-mode screen (as opposed to a graphical screen — a GUI), where you can use both CLI commands and TUI programs. So, technically, if you’re using a TUI in a graphical terminal window within a GUI, you’re strictly speaking not in a CUI, but are emulating a CUI within a GUI. And the CLIs and TUIs are running within that CUI. | | |
| ▲ | card_zero a day ago | parent | next [-] | | Oui. | |
| ▲ | snozolli 15 hours ago | parent | prev [-] | | I don't agree with that. I first heard CUI used to describe software like the Turbo Pascal IDE. I believe that "CUI" came about when GUI was coined to describe the modern graphical interface like Windows and Macintosh. That was in the latter 80s and early 90s. I've never heard TUI until literally today. Additionally, TUI is either Text or Terminal User Interface. Either way, it seems to be heavily associated with ncurses. As I understand it, ncurses essentially outputs a stream, which includes things like ANSI escape sequences for position and color. By contrast, CUIs like Turbo Pascal wrote directly to video memory. | | |
| ▲ | layer8 6 hours ago | parent [-] | | It’s true that TUI is a newer term than GUI and CUI. However, it isn’t exactly a new term either, its Wikipedia page was created in 2004. Look at the screenshots for illustration of what is considered a TUI: https://en.wikipedia.org/wiki/Text-based_user_interface Or here some usage of the term in 2002 referring to a Turbo Vision or Norton Commander-like interface: https://www.digitalmars.com/d/archives/c++/dos/75.html The technical means of how the contents of the TUI is established (character stream with special codes, or direct writes to text-mode video buffer) is largely irrelevant for the term. The essential characteristic is that the visual “state space” of the interface is a character matrix, and that the program treats it as such (instead of just unidirectional line-based output). Maybe you are right that CUI actually doesn’t cover CLI. The Unix System V documentation uses “Character User Interface” for curses-based interfaces (https://books.google.com/books?hl=en&id=idAmAAAAMAAJ). Then CUI and TUI are roughly synonymous, though TUI is the widespread term nowadays. |
|
|
|
|
| ▲ | pxc a day ago | parent | prev | next [-] |
| I came here to pick the first of those nits, too. A concrete example that sums it up: sed is a command-line text editor; nano is a TUI text editor. |
| |
| ▲ | sjmulder a day ago | parent [-] | | Btw, CLI editors can be interactive too: consider ed ("the standard text editor") and DOS' edlin. |
|
|
| ▲ | skywhopper 18 hours ago | parent | prev | next [-] |
| You’re missing ‘ed’ (and its predecessor ‘qed’) which is actually a CLI text editor. |
|
| ▲ | a day ago | parent | prev | next [-] |
| [deleted] |
|
| ▲ | holowoodman a day ago | parent | prev | next [-] |
| you forgot EDLIN |
| |
| ▲ | esafak a day ago | parent [-] | | 'coz it's better forgotten! Who could guess it was made in two weeks in 1980? Anyone who fired it up! | | |
|
|
| ▲ | wodenokoto 11 hours ago | parent | prev [-] |
| I forgot how the punchline is phrased, so apologies for the atrocious delivery, but I like the one about “I do all my coding in VIM, because I don’t know how to exit VIM” |