17 ms·
How I'm still not using GUIs in 2019: A guide to the terminal
- majewsky 8y ago> To avoid the annoying seconds in which vIM would freeze during tasks like syntax-checks, neovim lets you run jobs asynchronously. Vim 8 also has asynchronous tasks, as well as a builtin terminal emulator. So there is not much of a reason to use Neovim (except Lua scripts, maybe?).
- bhaak 8y agoWithout neovim, there would probably still be no asynchronous tasks in vim. Sometimes a little bit of competition is very well perceived. Others will probably chime in with the technical merits of neovim but for me, this reason alone is good enough.
- pmoriarty 8y ago"there is not much of a reason to use Neovim (except Lua scripts, maybe?)" Vim has allowed scripting via Lua since before Neovim existed.
- phailhaus 8y agoIt's faster, which I discovered after switching to it for Javascript/Typescript development. Also has better autocomplete plugins. Vim plugins just don't seem to have taken advantage of the async features yet.
- frou_dh 8y agoI like command-lines. I don't like TUIs. Here's the litmus test for whether a program truly belongs there: Would it shit the bed if its stdout was a printer?
- TeMPOraL 8y agoSo you edit with ed? :). Also anything wrapped inside tmux would definitely defecate if hooked up to printer. Some jobs are interactive. TUIs ain't bad for those.
- OJFord 8y ago> Some jobs are interactive. TUIs ain't bad for those. Exactly. A printer is an inappropriate output interface for an interactive job, it's not the input interface that's at fault.
- scarmig 8y agoThat got to me brainstorming what someone might do if they were trying to write a modern line editor, targeting developers writing in... maybe not Java, but perhaps Go. It doesn't seem like anyone has tried to build anything like that before. Most recent seems to be Rob Pike's sam from the 1980s, which (at one time in the 2000s at least) was the professed favored programming tool by Brian Kernighan and Bjarne Stroustrup.
- jgtrosh 8y agoI have an intuition that any line editor would find its limits quite fast for most existing code. (After having used ed a bit on regular files I came across, it's often both surprisingly useful and surprisingly obtuse compared with Vim.) Now, maybe a semantic structured language would find an amazing CLI editor. I'm vaguely thinking something like a lisp, or something with tagged structures. I guess the goal would be repurposing Vim's text objects to generic programming structures. That's as much as I can muster right now!
- JonathonW 8y agoIf it "defecates if hooked up to a printer", it's not going to be useful in a Unix-style text pipeline, either. So, what benefit do applications like emacs or vim (which are, fundamentally, keyboard-driven GUI applications, even if they're running in text-mode) gain by being stuck in a terminal? It's a simple least-common-denominator that's easy to push over a slow SSH connection, but why wouldn't I want to relax some of those limitations when I'm working locally?
- hyperman1 8y agoFor me, things like VIM where you first have to configure the hell out of it are a pain. Every time you're on some other machine, all your customization is gone. So after switching machines a bazillion times over the years, making the same little tweaks over and over, I've learned to deal with the default config. What I didn't expect: It made me a lot more productive in the long run.
- opan 8y agoVim seems like the wrong example. A lot of people use it with just the defaults. Emacs seems to be customized right away by more people.
- fiddlerwoaroof 8y agoWith emacs, however, people tend to use tramp to edit files on a remote server as if they were local. So, there’s less need for actually using emacs on a server in the first place.
- oftenwrong 8y agoYou can do the same with vim (in recent versions) out-of-the-box via netrw. :help netrw
- fiddlerwoaroof 8y agoYeah, although my experience is that when I use vim, I generally ssh into the box and start vim there while when I use emacs, I use tramp.
- jandrese 8y agoThis is why defaults matter. People sometimes downplay changes with "well, you can just tweak it if you don't like it", but in the long run tweaking the install every time is effort. Especially when you're working on non-internet connected machines. It's why I get annoyed when for example Ubuntu stops shipping the ability to burn DVDs on the install disk.
- qwerty456127 8y agoI bloody wish there were a really good TUI toolkit for Python, something like Visual Basic for DOS but with a bigger selection of more advanced widgets.
- broken_symlink 8y agoWhat about ncurses?
- qwerty456127 8y agoAs far as I know it neither does window management nor provides widgets (perhaps it can as Wikipedia says it's "added the form and menu libraries written by Juergen Pfeifer" in 1.8.8 (M1995) yet there is not a single example doing this with curses in Python), it just makes it slightly easier to build your own TUI toolkit on top of it rather than without it. I know about 3 Python TUI libraries available to the date: urwid, npyscreen and picotui (the first 2 using curses and the 3-rd one not using it), neither of them is anything nearly as good as any of the GUI framework I've ever tried. What I consider the best UI frameworks I've ever tried are WPF, WinForms, JavaFX and Swing - if there was something nearly as convenient to use in Python (or any other reasonably high level language, e.g. I don't mind JVM, Common Lisp or Ruby) but rendering itself via curses I would hardly ever use GUI as there would hardly be many valid reasons to besides watching/editing pictures and videos. Perhaps if there were a good text-mode web browser featuring full support of modern JavaScript (which I believe is not really much work to implement for a person with experience in the area as they wouldn't have to code the entire JavaScript engine from scratch, all it probably takes is to attach V8 engine libraries properly and/or implement the entire browser on Node, the problem is this hardly has market value) we could use React, Angular or something. Many of the console-dwelling hackers will probably consider this kind of thinking profanity yet it's a fact most of the people (including those who could prefer TUIs) don't have time to debug C code and implement low-level stuff.
- dwelch91 8y agourwid? http://urwid.org/ http://urwid.org/
- estsauver 8y agoI always find the benefits of portability to be a rather funny one: It's always immediately followed by 800 lines of dotfiles that do an incredible amount of customization. The IDE vs. vim/emacs purist debate is always crazy to me. There are some places where IDE's are almost certainly better: Java in a large project in IntelliJ has to be 100x better than in Vim. For new languages or languages where there isn't substantial IDE integration, it's probably 5x better in Vim/Emacs with a nice configuration.
- brootstrap 8y agoJust wait for the vim guy who will be like "but muh java plugins make it more efficient then IntelliJ"... I think i am more productive in an IDE, faster. Sure if you have this insane VI/EMACS setup that you have tuned for years. Good for you, you probably are a fucking wiz. My standard right now is a terminal & IDE combo. Working in the cloud era as a data person, you need to be comfortable with terminal & vi/emacs (vi for me but whatevs) as it makes life a ton easier. I hate watching co-workers do terminal shit and write code. Seriously guys if you invest a little time into VI pretty soon you are flying around your code. People literally watch my screen and are like WTF are you doing. I feel like a surgeon with precise incisions, cuts, tweaks. Compare this to spamming down arrow 30 times and then right arrow 80 times to get to a character in your editor...
- TeMPOraL 8y ago> Sure if you have this insane VI/EMACS setup that you have tuned for years. Good for you, you probably are a fucking wiz. To share a glimpse of the mindset of us on the editors side: that insane Emacs setup I've been tuning for years enables me to be "a fucking wiz" not just with Lisp. The very same setup lets me work efficiently with Python, Shell, configs, SQL databases, HTML+CSS+JS, running a personal Wiki, organizing tasks, tracking time spent on those tasks, billing customers for that time, reading/writing mail, and a bunch of other things. We love our editors because of compound interest - we get to reapply the same tricks to almost every task done on a computer (and we complain loudly when we can't shoehorn a task into editor-oriented workflow :)). That said, I'll still grant you're better off with IntelliJ IDEA for Java. For the time being, at least. I'm having high hopes for language servers trend - they're the bridge that could enable vim and Emacs to reach feature parity in all the places they're currently deficient compared to IDEs.
- jb3689 8y agoTitle is a bit misleading. Not sure this is "I'm not using GUIs" but rather "I'm using a terminal-based dev environment". I was hoping to find some nice terminal-based tools for browsing and e-mail and all the other annoying real-life things I need to use
- scarmig 8y ago> real-life things I need to use Emacs has a package for that.
- zeveb 8y agoI use eww to browse simple web pages when programming, and notmuch-el to read my email. For git I use Magit, and for Slack I use emacs-slack. As you might imagine, that all runs within emacs rather than vim. In my own case, emacs is running in a GUI frame most of the time, but I often use terminal-displayed frames as well.
- TeMPOraL 8y ago> but I often use terminal-displayed frames as well. Fun trick: if you run your terminal in 256 colors, the resulting terminal frame is nigh-indistinguishable from GUI Emacs for like 95% of the tasks. This works amazing over SSH, and allows me to work on heavy applications with full productivity even on a bus, with el-cheapo netbook and a mobile connection. (I really need to write a blog post about this.)
- trumped 8y agothe web browser is the only thing for me that is not shell-based... maybe Firefox will come through and create an alternative.
- cphoover 8y agoI'm one of the few people who agree with you. I'll bet I can do most things in vim faster than intellicode or whatever the new hotness is.
- farresito 8y agoJava in intellij+ideavim is much faster than in (n)vim, and that comes from someone who has been using vim for nearly a decade. Intellij is just too good.
- cphoover 8y agoBeen using Vim for about the same length of time... And the times I have used those emulators they just haven't been the same. Does the emulator support VimScript? Macros? Plugins? async jobs like vim8? The terminal is my IDE I can open a file with a couple of keystrokes, run bash scripts from inside of my editor and just as easily be back navigating the terminal. Maybe I'm missing something, but I don't see how intellij improves any of this stuff. I'd rather memorize compose-able bash commands, than intellij keystrokes.
- fiddlerwoaroof 8y agoWhat IntelliJ gives you is code generation and automatic refactoring to make writing Java less tedious. That being said, the tradeoff is increased resource usage.
- lghh 8y ago> That being said, the tradeoff is increased resource usage. Which for most developers in a corporate or small business environment is 100% worth it. Not ever corporate developer has a nice enough computer to run an IDE, but I bet that at least 95% do.
- farresito 8y ago(Just in case I didn't make myself very clear: I'm talking about Java; any other language is another story, and for that I use tmux+vim) It's true that there are a lot of small things that slowly add up that make the experience less positive (especially if you have used it for a long time), and I often have vim opened in the background precisely because certain things are easier in vim (ideaVim does have macros, although I haven't used them enough to really say how good they are). Ultimately, I've realized that I miss Intellij more when I go from Intellij to vim than the opposite.
- olig15 8y agoI'm a game developer mainly writing/reading/debugging C++ on a codebase that's well over a million lines of code. As with most game-dev I'm developing almost entirely using Visual Studio, and I can't imagine trying to navigate code using a terminal based editor. Maybe it's just because this is what I'm used to, however I just don't see how some of the tools would even be displayed in a terminal (parallel stacks window, for example) without some horrible ascii node graph. GUI's are definitely more than just bloat. Possibly not for what the author us developing, but there is definitely a use for IDEs/GUIs.
- dangom 8y agoWhat kind of navigation are you relying on that could not possibly work faster on a terminal? Horrible ascii graphs look horrible, but they are arguably more functional in that you can navigate them with your keyboard.
- lm28469 8y agoNavigation is rarely the limiting factor in development speed. I'd take better auto completion / integrated tools over faster navigation every day.
- TeMPOraL 8y agoI hope that language servers fully take off. This way, Vim and Emacs can gain semantic autocomplete & navigation. To be clear: it's not that they can't have that in principle, it's just that engines for semantic operations are difficult and expensive to write, so they were made primarily by IDE companies - and until recently, it meant they were tied to those IDEs. With that, the only remaining thing in which IDEs are a better choice than vim or Emacs is debugging. I wish for decent and fully featured debugging TUIs.
- NateEag 8y agoI've never been a big debugger user, but I thought if you like LSP, you might be interested in Microsoft's analogous debugger protocol: https://code.visualstudio.com/api/extension-guides/debugger-extension https://code.visualstudio.com/api/extension-guides/debugger-... I imagine Emacs, vim, and friends could implement their own frontends for this, much as has been happening with LSP.
- tom_ 8y agoYou can always run a terminal alongside your IDE, you know! The IDE-type approach is generally very convenient, making your day go past that bit more smoothly, and the terminal is good for all sorts of things that are just a faff to do with a GUI. (Interop is straightforward: just save from the IDE, operate on the file from the command line, then reload.) This probably won't be to all tastes, but I've been happy working like this for years.
- jshevek 8y agoBefore Android Studio, I found eclipse to be a laggy, buggy, slow-moving mess, but still I relied on it heavily for a variety of functions. I started using your solution out of necessity, but with a little bit of context switching muscle memory found it to actually be a wonderful way to code.
- mrath 8y agoI am sure the author is a power user of his tools. I tried to use Vim for more than a simple text editor for few days. I realised that it would very hard to replicate the productivity of a special purpose IDE(IntelliJ in my case) using Vim. tmux is great but if you are used to multiple windows or tabs that is fine as well.
- johnchristopher 8y agoAfter years of using Vim I gave up on the idea of using it as an IDE. It's really powerful for editing (navigation, searching, etc) but I am too dumb to do any debugging with it (xdebug, gdb, etc.). Too many panes, not enough memory slots for shortcuts. So I tend to use IDE with good support for Vim key bindings. So VSCode these days and waiting for a good neo vim based IDE.
- xemdetia 8y agoI kind of wish this article was deeper on what benefits the OP was seeing from the plugins or what have you. I just was left hoping for something more from something that claimed to be a 'guide to the terminal' which usually is much more in depth to a particular workflow and you can usually glean one or two things you can add for yourself. I'm from emacs land, and so generally using terminal over the emacs+GTK has a lot of limitations (ex: can't display or embed images, no drag and drop, copy and paste usually integrates better with the rest of the applications you are using when selecting regions of textual data). On top of that emacs comes with tiling for free where normally you would have to tmux+vim.
- wj 8y agoNot specifically related to the article but related to the theme of the article. I have a web-based dashboard that I created using a ruby gem called Dashing that was created by Shopify but since discontinued. I'd like to use a terminal based dashboard instead. Any suggestions? I came across WTF but don't know Go or see any documentation about building custom modules.
- fxfan 8y agoterminals unfortunately are a complete no-go for "all" Asian languages. to my knowledge right now no terminal emulator properly handles * cjk- specially so called double width chars * Indic- dependant vowels * west asia- rtl that's the entire breadth of Asia for you who cannot use terminals if hey want to write a letter in their own language.
- 188201 8y agoWith urxvt and hassle to install the correct font, it is doable to edit cjk using vim. Though it is less usable than using English, since you have to go back and forth to input cjk for input, and switch back to English for navigation and vim tricks. Some binding like f[some cjk work] becomes pointless since you are effectively typing f + (ctrl + shift) + (cjk word input) + (Ctrl + Space). You would rather use nano for extensive editing cjk. However, one or two words in cjk in some codebase is okay and not that bad.
- athenot 8y agoTerminal.app on the mac appears to handle cjk characters as expected (both lines output are the same length): $ printf "1234\n谢谢\n" 1234 谢谢
- Mr_Shiba 8y agoIt is 2019 and I'm using GUIs, because I'm not crazy.
- JasonFruit 8y agoThat's basically a content-free insult.
- chosenbreed37 8y ago> That's basically a content-free insult. Agreed. Totally not necessary. Possibly a result of carelessness as opposed to malice :-)
- da_chicken 8y ago> GUIs are bloatware. This is only true, firstly, when what you're trying to represent can be accurately, completely, and most concisely represented by plain text. That's actually a fairly narrow range, unless you're a programmer. And secondly, it's only true when you're not interested in using common interface conventions to teach your users how to use your program. While that can certainly be done -- the -? and --help parameters spring to mind -- it's much easier when there are UI guidelines [0] that everybody sticks to simply by virtue of how GUIs tend to work (i.e., there are existing common libraries to describe the interface in predictable ways). If everything you do deals with text (i.e., you're a programmer), and you never or rarely need to use unknown programs, then the terminal is great. Think about it this way. Exactly what have you had to do to learn how to use web pages? Like, since the 90s when Mosaic would still render most websites. You haven't. It's point, click, scroll, and type. That user interface has worked, essentially unchanged, for nearly 30 years. You've gone to brand new websites, potentially written by people who don't speak your language, and you've been able to use the site because there's a shared convention that everybody uses. And everybody does use it. There are 4.2 billion users of the world wide web [1], and the interface works for essentially everyone. That's an extremely impressive feat for interface design. Meanwhile, nearly 50 years after vi was first introduced, it's still notoriously difficult to learn -- even the basics. You might argue that programming is more complicated than browsing the web, but realistically, editing a text document is about as basic a task that you can have on a computer. [0]: https://docs.microsoft.com/en-us/windows/desktop/appuistart/designing-a-user-interface https://docs.microsoft.com/en-us/windows/desktop/appuistart/... [1]: https://internetworldstats.com/stats.htm https://internetworldstats.com/stats.htm
- jolmg 8y agoIt's common to think that the goal of UI design is always about being as intuitive as possible, to minimize potential learning curves until they're basically non-existent. I don't think that's the only worthy goal, though. Intuitiveness and power are often opposing goals. You often see a way to make an interface more powerful, let the user work more effectively and/or efficiently, at the cost of intuitiveness and having to increase a learning curve. In your last paragraph, I feel you mean to imply that vi failed in its UI design, but I think it's one of if not THE best UI design I've ever come across. There was a learning curve, yes, but I don't care, it was well worth it given how much it's improved my efficiency of anything text-related in my work. The cherry on top is that shells and any readline-based REPLs implement vi keybindings, so learning how to use its UI has become tremendous leverage, since this means that vi-keybindings become the new main text-editing UI convention system-wide. I don't understand your point about the web-browser. You say how great it is that its UI has not changed much (although I think it has) in so many years, then you say how bad it is that vi's UI has not changed much in so many years. Also, web-browsing is mostly about text, so I can't see it being much of a contrast with your earlier point about terminals being better for text things. About having conventions, CLIs probably have more conventions than GUIs, so I don't really get that point either. It's not just about --help, the concept of options, of long ones, and short ones, and them having arguments and all that are conventions. vi and emacs keybindings in many CLI programs are also conventions. If having conventions is great, I think CLI has GUI beat.
- kgwxd 8y agoWhat's with capitalizing it vIM? Website, man page, :help, none of those have it capitalized that way.
- jolmg 8y agoWeird, right? You'd think it was a typo, but it was a very consistent typo. Maybe they did it lowercase, then they `s/vim/vIM/`, hitting CapsLock and Shift at the same time when they wrote that.
- dangoor 8y agoYeah, there was that and "LUA". Some people just have their own ideas about capitalization, I guess?
- nickjj 8y agoI think the biggest win for primarily using a terminal based environment isn't because Vim or other terminal editors lets you write or edit code that much faster. Using command line tools and writing little scripts that you can easily integrate into Vim or another terminal editor really helps you solve your own problems that help make you faster at doing what you're doing. It really opens you up to thinking about how to solve problems in new ways. Things that might require writing a custom VSCode plugin where you simply default to "fuck that" become chaining together 5 Unix commands and setting up a Vim key bind to solve the problem in 15 minutes to do something that will benefit the next 5 years of editing code or whatever you're writing.
- wvenable 8y agoOf course, you can bind terminal commands to keys in VSCode (or virtually any other environment) just as easily. Personally I think these terminal vs. IDE discussions always revolve around straw man arguments and mythical divides. I can chain 5 unix commands together and use my IDE to navigate through code with my mouse. I don't have to choose one or the other and then feel superior about excluding a whole branch of technology.
- nickjj 8y ago> Of course, you can bind terminal commands to keys in VSCode (or virtually any other environment) just as easily. But what if those terminal commands need to interact with your editor? How would you set up a simple VSCode key bind to take the currently selected text, run a shell script using the selected text as input and then replace your selected text with the output of the shell script? With Vim, this kind of mentality is baked into how you work with the editor. Even as someone who is very new to Vim (about a month) it only took a minute of Googling to figure it out. After having used Sublime Text for about half a decade, followed by VSCode for a year I never even thought to do something like that either. I just took the easy way out of thinking "yeah I'm not going to make a custom plugin for this, I'll just settle for some worse implementation that someone else wrote that does 75% of what I want". But just weeks after using Vim, I'm finding myself adding all of these little customizations that are specific to things I do every day. It feels like my editor is working for me, not the other way around. > I can chain 5 unix commands together and use my IDE to navigate through code with my mouse I use the mouse in terminal Vim too. I don't really care about what purists have to say. For certain things I find using the mouse easier, so I use it.
- Spearchucker 8y agoThe world moved from CLIs to GUIs. Guis have not only persisted, they've improved. If someone insists on using a CLI and nothing else, after all these years of the world having moved to GUIs, I wonder what prejudice is behind it. How, reasonably, can all these tools beat a thing like Visual Studio? Must limit job opportinities too...?
- collyw 8y agoSome tasks are better suited to the command line. Others are better in the terminal. Package installation lies right in the middle for me. If I know exactly what I want sudo apt-get install is the quickest and easiest. If I am not sure exactly what I want its easier to browse around using synaptic. I can do more complex greps on the command line than most GUI tools will allow me to use.
- godshatter 8y agoI tend to use apt-cache search a lot if I know generally what I want but don't know the exact package name. It lets you use regular expressions when searching and you can restrict it to just the package names by giving it the --names-only switch. If I'm actually wanting to install a game of some type, but don't know what I want to try out, then I'll load up synaptic.
- chosenbreed37 8y ago> The world moved from CLIs to GUIs. Guis have not only persisted, they've improved. If someone insists on using a CLI and nothing else, after all these years of the world having moved to GUIs, I wonder what prejudice is behind it. The world is a big place and there are a variety of programs being written in a number of languages. Not all of them need a GUI. Oh and they don't have to beat Visual Studio. They just need to be the right tool for the job.
- TeMPOraL 8y ago> Guis have not only persisted, they've improved. Respectfully disagree. They've bloated up over time, and lost information density due to trends emphasizing lots of whitespace and hiding options. I liked my GUIs from 10 years ago better, thank you. > If someone insists on using a CLI and nothing else, after all these years of the world having moved to GUIs, I wonder what prejudice is behind it. It's not prejudice, it's pragmatism. CLI and vim/Emacs tend to have much higher productivity ceilings (i.e. there is something to master, and that mastery brings rewards). They compose better too, so you can solve more problems without starting to desperately bend the problem into the shape of your tool. They're also lighter, faster, enable easy automation (which is the whole point of this job), and can be used remotely. > How, reasonably, can all these tools beat a thing like Visual Studio? Because IDEs can be seen as one particular arrangement of those tools. It tends to cover the most common use cases, but you cannot really step outside it. Whereas "all these tools" used directly can be arranged in different ways, solving more problems. > Must limit job opportinities too...? No, it doesn't. With IDEs there's little to no expectation of "proficiency" there - after all, the GUI is there so that you don't have to know your tool.
- plexicle 8y ago"Not every machine has VSCode, Sublime or Atom installed, but every machine has a terminal." I love that the article goes from this sentence immediately to: "These are the main programs I use to make my terminal a complete development environment:" And proceeds to list 5 different programs, some of which are only available on macOS. Brilliant. Edit: One of which are only available*. My point isn't that there isn't a place for GUI and terminal, it's that "not every machine has x and y software" is a fruitless argument.
- cliff_badger 8y agoWhat? iterm2 is the only OSX program in that list of five. [edit] Plus, his whole point is that you don't need a GUI to get work done. Not, that you don't need software at all.
- mediocrejoker 8y agoSaying that you should learn the terminal because a machine may not have Atom or Sublime is sort of saying that an advantage of the terminal is that you don't have to install additional software, isn't it?
- TeMPOraL 8y agoNah, that sounds just like short for "I sometimes wear the devops hat" - that is, the author probably has to switch computers regularly. Productivity as a devops/sysadmin has different requirements than regular developer productivity. In the former case, you'd prefer standard terminal apps and default settings. In the latter, you'd customize the hell out of your CLI and editing experience.
- C1sc0cat 8y agoYes that's also key for network admins - ironically I found when doing my CCNA that my experience years ago on PDP's cli came in handy on ios (the Cisco os).
- coleifer 8y agoNarcissism of small differences. Pointless blogspam. Also, Neovim is much closer to visual studio than it is to something like nano or whatever.
- going_to_800 8y agoUsed Atom and other IDEs for 5 years. 3 years ago switched to vim + tmux and love it. I'm very productive with my setup and I can't imaging going back. I also love that I can git clone my dotfiles + an install script and I have my full dev environment on any machine in 2 minutes.
- deleted 8y ago[deleted]
- gambler 8y agoWhat are the chances that teletype simulation is the best possible way to interact with computers? This is what command line emulates: https://www.youtube.com/watch?v=AIWZ_pbLYqQ https://www.youtube.com/watch?v=AIWZ_pbLYqQ Yes, this was way better than punch-cards. But it was incremental and used completely arbitrary technology simply because it was available from somewhere else. UI as a concept was poisoned by Windows and its shitty derivatives. Like, there is no real reason you can't compose stuff when using GUIs. In fact, it should be easier than pipelining commands. There is no real reason the keyboard should be crippled by working in a GUI. It should be easier to learn commands. (But have you noticed that we still don't have dedicated keys for cut, copy, pate, undo and redo? The most common operations present in almost all applications. But we have a Windows key and caps lock.) Despite what people think, UI is still mostly unexplored territory with tons of potential for improvement. BTW, my favorite code editor isn't an IDE. It's LINQPad, because it gives me immediate feedback without much noise. Going from it back to REPLs feels like a downgrade.
- JdeBP 8y ago"still don't have"? For many years we did. "no longer have" is more correct. * http://xahlee.info/kbd/i/kb/sun_keyboard_left.jpg http://xahlee.info/kbd/i/kb/sun_keyboard_left.jpg
- gambler 8y agoYou're right, I should have said "still don't have on PC". I believe Xerox Star also had all those keys and then some. This might not seem like a big deal for some. But there are two important points to consider: 1. A lot of inexperienced user still go to mouse menu for copy-paste. This is horrible, but kind of natural, since a lot of UIs don't teach shortcuts. 2. Cut/Copy/Paste/Undo/Redo should be treated as fundamental building blocks of user interaction, not some "shortcut" that happens to do a thing. They aren't even UI-specific. You can do all of them in a command line app (although the semantics would much poorer). When I saw the demo of Xerox Star on YouTube I was both enlightened and depressed by the current state of things. Most people have no idea that icons were supposed to be objects and that interacting with them was supposed to be a way to send and direct messages to and between them.
- Blaiz0r 8y agoI love using nvim as my daily editor, but one thing I get from posts like this are that the authors rarely have to develop any kind of UI themselves, this author states they work in JS, but it looks like it's backend node work. I'd be interested to hear of any other stories from developers that use both terminal for almost everything but also have to have a web browser open for development. The best I do is have my browser and my terminal open 50/50 on one screen, but this isn't ideal, just a compromise.
- Improvotter 8y agoI want to give vim or emacs a real shot someday. I only really know the basic stuff and am fine with it. But I feel like I really need very good integration with the programming languages I work with like Go and Python. Besides that, I'm looking forward to see when xi-editor [1] finally becomes a stable alternative to VS Code among others. [1]: https://github.com/xi-editor/xi-editor https://github.com/xi-editor/xi-editor
- hydrogenglow 8y agoDah, What's the point?
- pulsarpietro 8y agoI mean .. use whatever you feel comfortable with, make sure you understand what you're doing, the terminal is the closest interface to the OS. I personally use it a lot but this arguments have been going on over (and over)+ again. And it won't be the last time :-) .
- Topolomancer 8y agoOne of the most important take-aways of this article: you do not need tons of plugins! I see this very often in motivated and bright developers who want to start using `vim`. They copy a humongous config file, install tons of plugins, and suddenly, something breaks or does not work as expected. In my opinion, it is much better to start from scratch. (besides, I have noticed a tendency in myself that is basically 'yak shaving for vim': the more plugins you have, the more you have to work on their configuration in order to make sure that they all work as expected...while this _feels_ very productive, it is actually the opposite of productivity)
- lucasfcosta 8y agoHello everyone, thanks for all your feedback! Regarding IDEs and bloatware: here’s a more detailed explanation of that argument https://lucasfcosta.com/2018/08/05/In-Praise-of-Plaintext.html https://lucasfcosta.com/2018/08/05/In-Praise-of-Plaintext.ht... They’re not always bloatware, they have meaningful use cases, I just don’t think most of them are in the domain of software engineering specifically. I’ll take some time to go through comments in more detail at another time and address them in the post if they’re relevant to the context. Thanks again for all the amazing feedback.
- ianstallings 8y agoThis dead argument seems to re-animate itself once a year or so. But my question is this: Why not learn both the IDE of your choice and how to use your terminal/vim? No need to arbitrarily limit your own knowledge and abilities. It just makes you stronger.
- robzhu 8y agoThis is why I'm creating a command-line alternative to Photoshop.
- hartator 8y agosome crazy image-magick fu here.
- jshevek 8y agoI once worked as part of a team which had graphics people who were allergic to the command line. Of course there are some things for which Gimp/Photoshop is really necessary, but it turns out that there is a massive amount of image manipulation that is better done on the command line than within Photoshop. The people who were dependent on Photoshop would take endless hours completing the same tasks which can be done in seconds using the command line.
- deleted 8y ago[deleted]
- bbpp 8y agohahahahahahahaha he's using a Mac!
- amriksohata 8y agoI'm not being funny but why do people prefer writing out lines of command line text versus right click and select in two clicks?
- jshevek 8y agoFor many people, writing out the command text is faster. Fantastically faster, when you take advantage of the efficiency improvements like tab completion, readline hotkeys, aliases, scripts, etc. And you don't lose time from whatever you do before and after, by taking your fingers off the keyboard.
- amriksohata 8y agoWith wireless mice you can move your hand nearer than they keyboard and even with tab completion navigation between files is hard compared to just a couple of clicks?
- jshevek 8y agoNo no, the problem isn't reaching across the desktop. The problem is literally taking your fingers off of home row. It's fine if you're in a phase of your activity where you're moving slowly, contemplatively. But if there's a series of tasks that we want to accomplish and we already know what they are, lifting your fingers off of home row will slow us down! Wireless vs wired mice have nothing to do with this. As far as what is considered to be hard, it depends on the individual. For many of us that spend a great deal of time on the command line, many multi-step activities, including those related to file manipulation, become like a single action. Consider the difference between touch typing and hunting and pecking. To an experienced secretary, the phrase "to whom it may concern" can become a single action, executed by the fingers without any thought whatsoever, while for an inexperienced typist that's 20 individual actions. Similarly, a whole series of file manipulations, git actions, SSH actions, become hardwired into our muscle memory and we don't even think about the steps. We just decide that we're going to do something, and let our fingers take care of it. This is much easier and faster then manipulating a GUI with a mouse.
- CivBase 8y ago> GUIs are bloatware. Why stop there? Most terminal editors are bloatware! "When I use an editor, I don't want eight extra KILOBYTES of worthless help screens and cursor positioning code! I just want an EDitor!! Not a 'viitor'. Not a 'emacsitor'. Those aren't even WORDS!!!!"[0] GUI and terminals both have their place. There is no single combination of software that perfectly covers everyone's use cases. By all means, share details about the environment that works best for you, but blanket statements like that just create controversy. Besides, modern terminals are really just GUIs designed to use the keyboard as the only peripheral. You don't necessarily need a REPL interface to support that use case. [0]: https://www.gnu.org/fun/jokes/ed-msg.html https://www.gnu.org/fun/jokes/ed-msg.html
- huydotnet 8y agoEven your terminal emulator is a GUI app itself. Don't say you are not using GUI app unless you boot to a command line interface directly.
- major505 8y agoPersonally I reall like VScode debugger, and pretty much centered my workflow around it. Sure, is really usefull to learn the ropes when work from terminal, because sometimes you will need to remote into a server. Or even, as happened before, people will give me a shit machine to work from. I was prograing in C/C++ in payment terminals (you know, credit card machines), and they give me an old dell with only 4gb to work with. The default environment was in Eclipse IDE, that usually fell bloated, and was even worst in this pc. So I just installed vim, make a fell changes in the .vimrc and I was read to go. I fell things: I don`t really care about the whole h,j,k,l on vim. I see no problemas in using the arrow keys. Maybe this was a problem like 20 years ago, but now keyboards pretty much will always have the arrows, and they will work just fine. If you use a keyboard with the arrow keys, I really think you like to complicate things. Sorry, nothing personal.
- googleanalytics 8y agoFor people using neovim, I've been impressed by this completion engine: https://github.com/neoclide/coc.nvim https://github.com/neoclide/coc.nvim It uses Language Server Protocol and goes quite deep pulling completions, and can, eg, render function documentation into floating windows (not yet merged into neovim)
- ilaksh 8y agoTake a look at fish shell if you are in the terminal. It can almost read your mind.
- BlackLotus89 8y agoI got the feeling that articles like that are multiplying? And many of them are using a Mac. Up until now I haven't seen anyone having a good setup with text-browser, office-suite (not ide I mean libreoffi e for the tty), image viewer (and I know there are quiet a few), pdf viewer,... So imho it's a bit clickbaity calling this setup (which had nothing new as far as I' m concernt) "still not using guis". Maybe the dot files got something interesting... Edit: Nope they didn't in fact hey are a joke a few alias, neovim, zsh and tmux (mac specific stuff like brew I didn't look at) one "useful" thing thought albeit not for me where the reference to xkcd 530 :)
- deleted 8y ago[deleted]
- speedplane 8y agoThe good development environments now-adays allow you to do everything from the keyboard and not click on anything. PyCharm being a good example.
- watergatorman 8y agoI generally agree with Lucas' sentiments re GUIs and in his other article "In Praise of Plain Text." But I currently select portions of text with a mouse by highlighting it, and then execute programs that accept that selection as input. I no longer am limited to entire text that would be written to StdOut or piped or redirected and so could be treated as complete text files. I can currently select and execute programs in a GUI in just 2 steps, using a mouse. Admittedly, I integrated the <program to execute> into the GUI, but it was relatively simple. To do this in Linux it looks like I would need to run a port of Plan9's Acme or the Wily editor. The port of Plan9 is way more than I need, so I will look at Wily. Maybe there are some other Linux editors that will do what my GUI currently does?
- watergatorman 8y agoAnswering my own question, Geany has "Sending text through custom commands" and ability to add custom commands via "Send Selection to->Set Custom Commands" But it looks like this just replaces the selected text so it may be more for formatting. I prefer a new window to open so the selected text isn't altered. I know I can program vEdit+ to do this, but that is not Linux.
- watergatorman 8y agoYou need to look at TUIs (Text User Interfaces).