[HN Gopher] GNU nano is my editor of choice ___________________________________________________________________ GNU nano is my editor of choice Author : todsacerdoti Score : 134 points Date : 2021-08-13 21:31 UTC (1 hours ago) (HTM) web link (ariadne.space) (TXT) w3m dump (ariadne.space) | davidkunz wrote: | >Hopefully this post demonstrates that nano is a quite capable | editor in its own right. | | This post showed how to add a slightly enhanced minibar, remove | the help and add syntax highlighting. It would be more important | for me how to quickly navigate text. | tpoacher wrote: | you can also quickly navigate text. | chaoticmass wrote: | I've been using mcedit (the editor component of midnight | commander) for about 15 years now as my primary editor for | coding. | riffic wrote: | more power to ya! that's what's wonderful about general-purpose | computing - there are many choices and whatever works for you to | get the job done is all that matters. | tomc1985 wrote: | I've always liked nano, as it seemed closest in functionality to | the text editors I used to work with in DOS (which set the UI | standard that I measure interacting with console applications | from) | | I wasn't aware people have added so much extra functionality to | it. Nowadays I turn to vim but I will give nano a closer look | jrockway wrote: | > The vim vs emacs flame war | | I doubt that there is any ongoing vim vs. emacs flamewar. Most | people are probably arguing about VSCode vs. JetBrains these | days. My impression as an Emacs user is that if someone says they | use Vim, I think "hey, one of us". (nano I guess falls into that | category, but I bet nano users are missing out on some timesaving | innovations from the last few years, and nothing frustrates me | more than people that have inefficient workflows because they | eschew learning new things.) | | > Emacs Lisp is not really a particularly fun language to use | simply for customizing the behavior of an editor -- as they say, | Emacs is a nice operating system, it just needs a good editor. | | I doubt one would like an OS where the SDK only supports a | language they don't like. I know this was an attempt to reuse a | quote, but I think they actually like the editor and dislike the | OS, which is the opposite of what sentiment that quote conveys. | (Here's another tired meme: "eighty megs and constantly | swapping".) | | Emacs Lisp is actually very interesting in its staying power. It | was designed from the ground up to write programs that the | programmer is in front of all day, and that's very different than | the enterprise / systems programming use cases that modern | languages optimize for (where tens of thousands of copies of your | program need to run unattended). The API and tooling matter more | than the actual programming language, and I've looked around at | other editor platforms and they're just not there yet. You can't | C-M-x to run the line of code you're currently editing. You have | to write HTML and CSS to supply preferences to your plugin. It's | so weird to me how actively extension-hostile the popular editors | are these days, and how hard they make manipulating the contents | of the editor. | garciasn wrote: | I wish vim had the option for CTRL-K/U behavior rather than | having to do the unintuitive (to me) visual block. | techrat wrote: | https://i.imgur.com/LV6umMH.png | lcnmrn wrote: | # highlighting for all languages | | include /usr/share/nano/*.nanorc | | set autoindent | | set minibar | | set morespace | | set historylog | | set linenumbers | | set softwrap | | set tabsize 4 | | set tabstospaces | | Now you got a full featured IDE. | pauldirac137 wrote: | Nano is OK, I guess, but it's a bit bloated. Now ed(1) -- that's | an editor! | markus_zhang wrote: | I think I'm getting enough of these editor posts. It's just a | tool and I'd rather see more language war posts. | awelxtr wrote: | Aren't languages just tools, too? | markus_zhang wrote: | Yeah, that's the point. Since they are both tools, I'd rather | see more tool war posts regarding languages. At least people | will quickly deviate to language theory or quirks in | languages so that we can learn a lot. | mad_ned wrote: | i spent a good long time writing code in emacs but our current | project uses an IDE, and I found I could be pretty productive in | it and learned to leverage its advantages. But I could not live | without a solid text editor, and still use emacs for texty stuff, | like config and log files and such (even though in theory i could | do that in the IDE as well) | | But as a result, a lot of the cool stuff I had set up in emacs | never gets used anymore. not even sure how to run many of the | .el's anymore i have in my .emacs tbh. I could probably get by | just fine with nano but run full emacs just out of habit. | matthewmorgan wrote: | May a 'gatekeeper' give me a nod in the right direction | jtchang wrote: | Nano feels a lot like windows notepad. Still my favorite editor | and beginner friendly (as far as unix editors go). | bigdict wrote: | How do you navigate text in nano? | pphysch wrote: | Slowly | 28175022 wrote: | As much as we all enjoy low effort posts, there are a number | of shortcuts to move around, as well as the general "find" | option. | | https://www.nano-editor.org/dist/latest/cheatsheet.html | pphysch wrote: | If we're gonna learn a stack of key combo shortcuts, why | not go with a editor that was designed with that in mind | (i.e. key combos organized into a hierarchy rather than a | huge flat mess)? | gravypod wrote: | Note: I'm not saying nano is perfect but these are some | nice features. | | The key bindings are at the bottom of the screen. | | Example: https://imgur.com/tFVNFc4 | | ^ is CNTRL. | | > why not go with a editor that was designed with that in | mind (i.e. key combos organized into a hierarchy rather | than a huge flat mess)? | | Nano has a tree-like structure. There are a a few root | commands for common things but a menu like "replace" has | these options shown: https://imgur.com/5IKRyeC | | In this screen you can see "M" which means the ALT key. | These names (^, M) are not ideal but they have their | roots in the originally common teletype names (control, | meta). It's not the best but it's easy once you remember | those two things since you need to remember nothing else. | | An important note about these menus: they remember your | previous insert. If you click the up arrow key you can go | back in time to previous searches just like your | terminal. It's how I could say that 4 searches ago I | looked for `affinity_test`. | | Also, nano supports all of the standard navigation you | will be used to. Things like: - Page | Up/down: Go up/down an entire page of text. - | Arrows: Navigate text one character/line at a time. | - Scroll Wheel: Move cursor up/down for each input. | - ctl + left/right arrow: Move one "word". - Home / | End keys: beginning and end of line. | | So, the things you already know from all other programs | directly apply. The things that aren't the same that you | _will_ use are at the bottom of the screen or behind a | "CNTRL+G" menu that is at the bottom of the screen. All | for giving up ~3 vertical lines of text. I just checked | and at my default font size I can fit 57 lines on my | monitor so I'm giving up 5% of my screen so anyone, | regardless of skill level, can sit down at my computer | and know how to operate the text editor. | gruez wrote: | * arrow keys | | * pg up/down | | * find (^W) | | * go to line (^_) | | the first two are standard across applications, and the last | two are in the help menu that shows up by default. | bruce343434 wrote: | > (^_) | | Confusingly, this is actually not a ctrl (^) shortcut at all. | It is alt-g. | RandallBrown wrote: | ctrl + underscore is go to line, column for me | | Am I misunderstanding what you mean? | tpoacher wrote: | no, it is control underscore | | alt g is another binding for the same. | rahimnathwani wrote: | Not confusing. | | ^_ is ctrl and underscore | | underscore is shift and minus | | So ^_ is ctrl and shift and minus. | | On my computer, doing ctrl+shift+- brings up 'Enter line | number, ...'. | techrat wrote: | Hell, even the mouse scroll wheel works. | Palomides wrote: | lesser known nano fact: with -m it supports mouse clicks for | cursor movement | budafish wrote: | I've been a really big fan of Micro[1]. A single binary with | excellent out of the box features. Mouse mode, syntax | highlighting, tabs etc | | [1] https://github.com/zyedidia/micro | timothylaurent wrote: | but are there vim keybindings? | budafish wrote: | From the faq. | | Does micro support Vi keybindings? | | Currently micro does not have any sort of Vim emulation. | However, this is the next major feature that is planned, so | stay tuned. | type0 wrote: | It is great. It should have been the default editor in some | Linux distros that settled on nano! | rickstanley wrote: | The only thing that keeps me from using it as my daily editor | is the clipboard functionality in WSL (using Windows Terminal). | The first problem was clipboard not working at all, after some | updates and tweaks (aliasing xclip to a custom bash script) the | clipboard worked. The second problem is yet to be resolved: | copy/cut and paste ignores new lines, I haven't found a | solution ... Any advice is appreciated! | theonemind wrote: | Outside of corner cases, most of the things that become the focus | of tech religious wars make fairly marginal difference compared | to other factors, like proper design, testing, documentation, | etc. (Corner cases do exist, however; no one wants to write a | compiler in brainfuck). I definitely tend toward a view of do the | work, boring stuff included, in whatever text editor, IDE, and | language floats your boat. | kzrdude wrote: | Why is nano the favourite editor? What's the upsides and why does | it stay the favourite? | andrewzah wrote: | It's very simple. It behaves like users would expect something | like Word to behave. | | Editors like Vim have a learning curve because they introduce | the concept of modal editing which takes some getting used to. | kzrdude wrote: | I can't even properly explain why I like Vim. I guess it's | the same way, by habit. When in a non-modal editor I'm just | very clumsy. Trying to type commands but inserting text | instead by mistake and so on. | guyromm wrote: | https://www.gnu.org/fun/jokes/ed-msg.en.html | ctur wrote: | The thesis of this post is roughly that nano, when configured, is | enough of an editor for the author. Which is totally fine! People | should be happy with their tools and not feel pressured by | popularity to use what others use (vim, emacs being prime | competitors in this case). | | Alas, nano (and pico before it) have a certain stigma among more | "experienced" Unix users that more or less boils down to | gatekeeping and snobbery. Which is a shame. | | That said... it is worth considering that learning tools like | editors is an investment in one's self and pushing through | preference to genuinely try to use what others find value in can, | if nothing else, help you better understand what you value and | adjust your tooling to fit (much like the author adjusted Nano to | be more like vim). | | That's a pretty nuanced distinction though and I am glad that the | author feels comfortable owning their preference and not feeling | pressured by peers to conform to more "acceptable" choices while | still having tried and learned from them. | relax88 wrote: | It's not really gatekeeping or snobbery to say that knowing vim | is more useful simply because I can log into any Linux machine | on the planet and edit a text file without having to install an | editor. | hkt wrote: | Is installing an editor really such a hardship? | orthoxerox wrote: | Yes, because your sysadmins won't give you sudo, so you | must scp a copy of nano into your home dir. Surprise, it's | an AIX server running on Power, so your x86 nano won't run. | Does building one from source count as hardship? | dllthomas wrote: | Usually not, sometimes very much so. | yakubin wrote: | In "linux embedded", absolutely. You take what's there. At | some point I even had a debugging session through | TeamViewer connected to a Windows machine which had | Terraterm open connected to serial port of a linux box. | Unfortunately, there was a lot of spam on the serial port, | so even using vi was impossible, because the screen got | garbled pretty fast. So I printed the files with cat, | worked out a set of sed commands to get those files to the | desired state and typed them back in. Crazy. But real. | | (Add to that communicating with a guy on-site over | notepad.exe. Mr. Robot vibes.) | emef wrote: | this is less true these days w/ slim docker images that don't | include any editors by default | dijit wrote: | Doesn't POSIX designate vi as a requirement? | | https://ieeexplore.ieee.org/document/6880751 | yakubin wrote: | POSIX doesn't say anything about containers. | dijit wrote: | But your containers may be a bit weird if their | environment isn't POSIX. | | Like if you removed the "cd" command or the ability to | read environment variables. "Containers" is any | definition you want, but surely they're built to some | standard. | | PS: I do make "from scratch" images a lot, I know you | don't "need" to have any utilities at all, but I'm fairly | certain that a lot of software expects the "OS" to be | POSIX. | yakubin wrote: | I don't know what you mean. Linux containers don't | contain operating systems. They contain processes. POSIX | describes operating systems. | | Every Linux process can read environment variables. They | are contained in its address space. "cd" is a shell | built-in. When there is no shell, there is no "cd". Not | providing access to a shell sounds like great security | practice tbh. Your applications shouldn't be using it | anyway (they should create new processes directly). | messe wrote: | This is just being obtuse for the sake of it. Yes, | technically nothing in the notion of a container | necessitates that; containers are just a form of | namespacing. Have a gold star for understanding that. But | the fact is: the vast majority of containers in use are | going to be based on some minimal OS image, which is what | the commenter was referring to. | privacyking wrote: | Not sure, but I've logged into many terminals before and | not one of them didn't have vi installed. Have found | plenty without nano or vim though. | aroman wrote: | They probably meant snobbery that vim is superior because | it's more capable, not because it's more ubiquitous. Nano is | also very widely installed, so the latter point isn't even | particularly true. | brundolf wrote: | Every Unix machine (Mac or Linux) that I've ever tried to use | nano on has had it preinstalled. I'm sure not _all_ of them | have it preinstalled, but it 's very common. | klyrs wrote: | In the late aughts, I found myself at the keyboard of a | Solaris system that only had ed. I was there to get the | network configured and it didn't have an optical drive, so | there was no way but forward. | | More recently, I've found myself inside a container which | didn't have _any_ editors. I got the job done with echo, | head and tail. Delightful. | trey-jones wrote: | Removing vi from your container image is rude, IMO. | correct_horse wrote: | Most non-copyleft (permissive free software and proprietary | software) tries to stay as far away as possible from the | GPLv3 license. Because of this, macOS ships gnu nano 2.0.6 | whereas the latest is 5.8. FreeBSD doesn't even have nano | installed by default. | relax88 wrote: | If you've never logged into a Linux machine without nano | installed, then you probably haven't logged into that many | flavours of Linux machine. | | I agree this is pretty much a non issue for the average | developer, but those of us who work on network | infrastructure, as red-team hackers, or do any work on | embedded systems can attest to how much of a pain it would | be to not know how to use vi/vim. | bluedino wrote: | Except when it's vi and casual vim users can't figure out why | nothing works | trey-jones wrote: | Aren't casual vim users really vi users? I use emacs | primarily but years ago created an _extremely_ minimal (~20 | lines) .vimrc to be installed by default on every server I | work on. Some color, maybe indentation, I don 't even know | because I usually just use Emacs/TRAMP these days, but I'm | nearly 100% sure that every config there works in vi. I | would consider myself a casual vim/vi user in that I don't | know the differences. | hn8788 wrote: | I may be misremembering, but the biggest differences I | remember between vi and vim as a semi-casual user is vi | defaults to not supporting arrow keys, and doesn't tell | you the mode it's in. | babypuncher wrote: | I've never worked with distros targeting enterprise, but I've | never encountered a distro that didn't include nano. | | Even if Vim is "better", I think it's important for all | distros to include a text editor that is easy to use out of | the box, and nano fits that bill perfectly. | shapefrog wrote: | Its not snobbery if it is better | swiley wrote: | I'm glad for nano users because the popularity of their editor | probably won't ever mean stuff that won't work with mine. | dijit wrote: | The thing about that "snobbery and gate keeping" is that it's | not at all that. | | Maybe not everyone's experience mimics mine but I _felt_ like | people looked down at me a bit when I was 16 for using nano on | the command line. | | But, and here's the kicker, if I hadnt been pushed into vim I | would not be nearly as productive now. | | There have been countless times in my career as a | sysadmin/devops/SRE where I've been stuck with horrible latency | to machines half a world away (or, a few miles away but the | network is crappy) and being able to send just a few keystrokes | and get a lot of power out of it is helpful. | | That's not counting all the "repeat" patterns or complex search | and replace. | | I remember still when I got my first job as a junior sysadmin, | I spent a really long time logging in to each machine, updating | a config file, logging out then going to the next one. | | I didn't need to be told that "ssh and nano is fine", I needed | to be told "there are better tools that you should invest in | learning, because they will repay you back thousandfold". | | What I thought were people looking down on me were in fact | people looking at me with hopeless pity, because I fought the | idea of learning vim. | davmar wrote: | +1 for vim. I also spent a lot of time resisting it. Now it's | all I use because it's just so much better. | crazygringo wrote: | > _What I thought were people looking down on me were in fact | people looking at me with hopeless pity_ | | Or maybe they actually were looking down on you. When we feel | bad in response to someone else, we're not usually | misinterpreting the emotional cues. | | It's not just what they say -- it's the _way_ they say it. | | Which is why the term "constructive criticism" exists. If you | want to help them, then make them feel _good_ by expanding | their knowledge. But support them in their own choices and | autonomy. | edoceo wrote: | Have you tried... | | Vs | | What you should do is... | ghaff wrote: | It also depends what you use an editor for. Back when was | doing more programming, I used something more powerful for | the DOS environment--yes this was a while back. | | I tend to use nano because I'm mostly making changes to | config files and the like so I mostly want simple. | 2muchcoffeeman wrote: | _Maybe not everyone's experience mimics mine but I felt like | people looked down at me a bit when I was 16 for using nano | on the command line. ... What I thought were people looking | down on me were in fact people looking at me with hopeless | pity, because I fought the idea of learning vim._ | | People need to check how they encourage other people or | promote things. You probably weren't wrong about feeling | looked down upon. Even if they really thought you would | benefit. | dheera wrote: | It's not gatekeeping, anyone can use any editor they want, but | you bet I _will_ judge your ability to code by your preference | of editor, for the simple fact that there are lots of frequent | tasks in coding that the basic editors like nano /gedit/Notepad | do not provide for. Simple tasks like jumping to line numbers, | refactoring and search/replace with regexes, sending the output | of a set of lines through a command, syntax highlighting, | importing from a file, looking at column numbers, split pane | editing, repeating commands, ease of conversion between | DOS/UNIX carriage returns, git status, being able to insert 4 | spaces when you hit the tab key, being able to adjust the | indent level of multiple lines at once, and much more, I expect | experienced coders to want at least a large subset of this | stuff in their editor. | | If you say your favorite editor is vim, emacs, sublime, | eclipse, VS code, Atom, pycharm, anything along those lines, | I'll likely think you're an experienced coder. And if you have | an especially strong opinion, I'll consider you even more | experienced, even if your strong opinion differs from mine; | simply by virtue of having of strong opinion it means you | likely have been using it for years and have found other tools | inadequate for your skills. | | If you say your favorite editor is gedit, notepad, or nano, | chances are I won't think of you as beyond a beginner-level | coder. It means you have zero desire for certain features that | are almost necessary to be efficient in large software | projects, and signals to me that your skill set is possibly not | high enough to have experienced that desire for advanced editor | features. | accelbred wrote: | Jumping to line numbers can be done with mouse. Refactoring | and search/replace can be either sed or grep and copy/paste. | Filtering text through a command can be done in your shell. | Nano has syntax highlighting. Importing from a file is copy | and paste. Not sure when you really need column numbers. | Split pane editing is tmux or multiple windows. | | Now I'll take my customized and plugin-full neovim setup over | that any day, but that does not mean a developer cannot be | fully competent with nano. I've worked with large projects | where I didn't have access to neovim or my setup and just zsh | and vi were enough to get the job done. Having to use nano | would have been more of an inconvenience but it would have | not been in any way undoable. Understandably, a dev would be | more productive with their preferred setup, but if a dev | couldn't work without it, that would be a red flag. | brazzy wrote: | >And if you have an especially strong opinion, I'll consider | you even more experienced, even if your strong opinion | differs from mine; simply by virtue of having of strong | opinion it means you likely have been using it for years and | have found other tools inadequate for your skills. | | If you really think strength of opinion indicates experience, | then clearly you don't have a lot of experience with | people... | techrat wrote: | > It's not gatekeeping, | | > you bet I will judge your ability to code by your | preference of editor, | | FYI. That's called 'gatekeeping.' | trey-jones wrote: | It's kind of a misnomer then, isn't it? He's not preventing | anybody from doing anything, just forming a preconception | based on what I think a lot of people would agree is sound | logic: | | That on average, people whose first instinct is `nano` to | edit a file in Linux have less experience than people whose | first instinct is `vi(m)` (or, selfishly `emacs`). | techrat wrote: | https://www.urbandictionary.com/define.php?term=Gatekeepi | ng | | > When someone uses a hobby or interest as a means of | elevating themselves above others to give oneself a sense | of being superior transforming their passion or knowledge | about a particular subject into an ugly tool of self- | inflation. | | The shoe fits. | | First editor I used was vi/vim. | | For years it was the only editor I could use. (My CS | education and school server use predates Pine/Pico/Nano | and later on, it was a long time before nano was an | option on more restrictive/specialized machines) | | I still prefer nano. | | In the end, I don't give a fuck what you use as long as | you can get the job done. | | Passing judgement on what people prefer to use is the de- | facto definition of 'gatekeeping.' | GekkePrutser wrote: | Many of the things you mention are absolutely in nano :) Like | highlighting, jumping to a line, importing.. I don't have the | time to do a point by point comparison but trying nano for 5 | minutes doesn't equate knowing it, just like with vim. | | I'm not big into coding anymore and nano is handy for my | muscle memory, coming from DOS :) It's good enough for my | purposes. Sure vim is more powerful but it's not as | accessible to the casual user. It's a good tool for its job | just like vim is. They're just different jobs. | ixfo wrote: | Absolutely. I use loads of those features including regexp | in nano all the time and it works fantastically well. For | me it's the fact that it's small (so available on nearly | every platform) and the command interface is so _quick_. It | 's light, fast, and snappy to drive - no context "shifts" | to get to commands, and I can do "power user stuff" with | just a simple key shortcut _which is written on the screen | so you can see it_ most of the time. It's easy, and that's | worth more than a thousand vims. See also the success of | Visual Studio Code. | shapefrog wrote: | I too was bullied from nano onto vi/vim. I still dont think I | 'get it' but the brainwashing is complete, I cant even type the | word nano into a terminal. | | I too applaud the author for their bravery in coming out as a | proud nano user, not that there is anything wrong with it. | hprotagonist wrote: | there are far worse choices. for quick stuff, i either emacs -q | or nano more or less interchangably, and in my larval stage i | lived in nano (and pine!) for many years happily enough. | | These days, i find that my movement key memory will betray me in | nano at the worst time(s), so i tend to stick with emacs -q -nw | for light-and-fast stuff, but when that's annoying to obtain, | i'll happily fall back and think more carefully about my | keystrokes. | Jtsummers wrote: | emacs --daemon | | Then connect with emacsclient. You can also name the daemon | which lets you have specific configurations for specific tasks. | At that point, launching emacs for quick stuff is _very_ fast. | hprotagonist wrote: | oh, i know. sometimes i want barebones as well. | rubyist5eva wrote: | no matter what you editor you use, set EDITOR to whatever you | want, then when you want to edit files as root do `sudo -e | /path/to/file` | | thanks me later | darnir wrote: | Or even simpler use `sudoedit /path/to/file/` | rubyist5eva wrote: | sudo -e is less characters to type tho, though I guess you | can do sudoe<TAB> and complete it...choices, choices | _def wrote: | The more you know. Thanks! | throaway46546 wrote: | How is it better than `sudo vi /path/to/file`? | dllthomas wrote: | `sudo vi` runs vi as root, which means 1) it won't have your | users configurations, and 2) it's probably way the hell over- | privileged for what you are trying to do. | | `sudoedit` (and equivalently `sudo -e`) makes a copy of the | file that you can edit and then copies it back as root iff | it's changed. | _def wrote: | nano was my cli editor of choice because I was overwhelmed by | vim. For years I felt subpar and thought that I should learn | using vim. I'm using vim for some years now but I don't really | make much use of it's features, maybe an occasional cut and | paste, which probably can easily be done with nano too. | dllthomas wrote: | https://vim-adventures.com/ is a fun way to flesh out your vim | understanding. I've only been through the free bit and balked | at the price tag, but very much enjoyed what I played and if I | weren't already well versed in vim it would probably be well | worth it to continue. | RandallBrown wrote: | My dirty software engineering secret is that I don't know how | to use vim. Like at all. I've been a developer for over 10 | years at this point. | | The only thing I remember is that some combo of hitting the | escape key and typing :wq gets me out of it. When I get a new | machine I have to immediately change the default editor for git | so I don't get totally stuck if I need to edit a commit | message. | | I also use a GUI text editor for git... | | I really appreciate that nano has it's shortcuts written on the | screen for me to use. It's my CLI text editor of choice for | that reason. | bspammer wrote: | An easy (and fun) way to get better at vim and learn some of | its features is to play vimgolf [1]. After you submit you can | see solutions which are slightly better than yours, and run | them through to see what each command does. | | [1] http://www.vimgolf.com | tonyfader wrote: | please, just, no. | Guid_NewGuid wrote: | So I have a question and I'd like to understand if possible. | | To me programming isn't text editing. Granted, we use text to | write most code outside of say Pike but effectively most | programming is working with symbols right? Like .subst is | meaningless as an operation on a string but .substring(0, 1) is | meaningful. | | So I don't really get the advantage of such, to my mind, | rudimentary text editors. At a minimum surely being given | contextual information about the symbols you are working with | (type, fields, methods, etc) is helpful? Perhaps there are | languages or domains that are better suited? I can see that | there's not much difference between an ide and editor for new | languages but why do people prefer text editing and prioritize | typing speed where IDEs exist? Does an editor create a sort of | flow or deeper state since lack of tooling requires deeper mental | context? | bachmeier wrote: | > I can see that there's not much difference between an ide and | editor for new languages but why do people prefer text editing | and prioritize typing speed where IDEs exist? | | That's not why I use a text editor (Geany most often). I find | the IDE to be complex and to bring on complexity. If I'm using | a text editor the project has to remain simple. The best | analogy I have was when I used Slackware. Ubuntu users would | laugh because Slackware didn't have a package manager that | resolved dependencies. Slackware users would laugh because | Ubuntu had a packaging system so complex that it needed | dependency resolution. Simply put, using a text editor imposes | discipline that makes programming more fun for me. | | I'm sure I would use an IDE if I were a Dilbert-style | enterprise Java developer. The enterprise thing took all the | fun out of programming so I took my career in a different | direction. | Guid_NewGuid wrote: | > I'm sure I would use an IDE if I were a Dilbert-style | enterprise Java developer. The enterprise thing took all the | fun out of programming so I took my career in a different | direction. | | I think this is the crux of my fear here. Like I don't really | enjoy the jobs I've had because they tend to be that kind of | environment. I'd compare it to being a logger whose sole job | is to saw lots of logs quickly. Using a handsaw just seems | barmy but you would probably use one when building a | jewellery box. I guess Unix type architecture and design | encourages jewellery boxes over lots of planks quickly. | arghwhat wrote: | To me, programming is a mental task that requires overview and | easy text manipulation. | | Most IDEs get in the way of me effectively navigating the code | as it was originally organized, while still maintaing my | overview. "Big" IDEs that clearly sacrifice text area for | widgets, or shift text around to pop up distracting inline | "help" are the worst offenders. I'm looking at you, Visual | Studio. | | Common IDE tools like ho-to-definition usually leads to poor | understanding of the code structure (and in turn doesn't train | for good structures). My best anology being navigating by gut | vs. being told where to go by an app - you never learn the | route and scenery if you're always busy following the route | instructions. And if you never start navigating by gut, you | never learn to find your way in general. | | I always get frustrated by how slow go-to-definition users are | compared to those that just... Open the file in the tree that | would logically contain that part. | | This is just one example of course - another is that IDE are | usually not very versatile when writing in many languages. | Also, a good text editor can have IDE-like features in a non- | intrusive way, but the difference between "IDE" and "enhanced | text editor" would to me be the intrusiveness. | Guid_NewGuid wrote: | Thanks for your answer, out of interest what languages are | you primarily working with and what sort of team and codebase | size? It sounds like being forced to consider navigability | would offset the tendency for codebase 'melt' in larger IDE | assisted projects. | | Also one area I lean heavily on an IDE is I can switch | codebases up to 4 times in a day between JS and Java, so I'm | not going to remember structure most of the time and being | able to have all kinds of crutches helps me maintain | velocity. Do you find your sense of navigation when swapping | is enhanced because you have a deeper understanding of the | structure from memory? | | I'd say VS Code kind of straddles that middle ground, like an | enhanced text editor++. But then full IntelliJ is where I | feel most at home so obviously we have different preferences | and that's fine. I just worry I'm missing out and heavily | dependent on IDEs. | Barrin92 wrote: | for me personally I noticed that using an IDE started to | replace my memory in a way and I didn't like it. I noticed that | when I program in languages with an IDE environment (Java in my | case) I only really slowly picked up what functions were | available in a libraries and I started to really dislike this | reliance on constantly looking up things. | | When I just program without autocomplete or for that matter | constantly googling I actually paid way more attention to | 'where things are'. | | In python I pretty much know what every string method is. In | some languages I used IDEs for I was still scrolling through | the completions because I somehow never picked anything up. | Guid_NewGuid wrote: | To be fair my memory has always been terrible. I loathed | times tables at school. I still don't really know them. I | just feel like if I need to know I'll use a calculator and if | there isn't one available I'll have other problems like clean | water and food! Having a general sense of 'size of' numbers | was enough and I'm pretty good at maths. | | I get that it impedes memorization but how does that scale to | using new libraries which may lack documentation? I'm jealous | of your memorization of those string methods, every time I | switch to JavaScript I feel lost because I don't recall | substr Vs subString Vs substring etc! | nonameiguess wrote: | There are many parts to answering this. | | First, "plain" text editors have caught up with IDEs in many | ways that you're talking about here. With a good LSP plugin, | you can hop to definition and autocomplete perfectly fine. For | a strong statically typed language, the editor can even tell | you why it won't build and how to fix it before you even try. | Many things you used to need an IDE for just no longer require | it. | | Second, even without those tools, people hacking away at a | keyboard are often doing a lot more than just writing | executable code. You're editing config files, READMEs, | comments, documentation templates, test data, API request | examples. None of these things are amenable to any of the | niceties an IDE can help with. | | Third, in a microservices world or even just working on a plain | library that calls into lots of other libraries, unless you | download the source code for every dependency, hop to | definition and autocomplete isn't guaranteed to work anyway. | It's often easier to pull up the API documentation in a browser | on a second monitor and refer to it while working. Screen real | estate is cheap these days and the more mature projects you're | better off using as dependencies anyway tend to be pretty well | documented. | | Fourth, an increase in the use of dynamic languages has brought | with it an increase in dynamically-generated code. There's a | lot of convenience here in reducing the amount of boilerplate | you need to type out and being able to change behavior without | even having to rewrite the core code, but it also makes IDEs | less useful. It pushes the mental burden of understanding how | code gets generated and runtime objects get decorated and | changed by understanding the underlying data model of the | language and its runtime, but hey, that's what we're paid for. | | Fifth, what does it even matter in the grand scheme to have | definitions and names more readily available inside the actual | window you're typing into? It's a convenience, sure, but if you | type subst when it should have been substring, you try to build | or run a test or just a static analyzer or whatever and you get | an error message and remember "oh yeah, that's Language X and | I'm writing Language Y," you lost what? A minute at most to go | do a global find and replace? Compared to the time studying a | problem domain, designing and vetting a solution, coming up | with adequate test cases and a suitable type representation | that models the domain, the time spent literally typing out | function names is minuscule. I'm not going to say saving | seconds there is worthless, but it's not a huge gain. | haolez wrote: | It's not about the editor: it's about the combination of other | tools. Simple text editors invite you to use specific tools for | specific tasks that an IDE aggregates and configures for you. | | An IDE is usually good enough, but for some environments, | having total control of your tooling can give you big | productivity boosts. And not every software depends upon lines | and lines of code. Sometimes, you will write useful software | that's only a couple hundred lines, but required you hundreds | of hours thinking about the problem :) | kevin_thibedeau wrote: | The advantage is you don't become dependent on an IDE. Ever | seen someone who can't write anything without all the IDE aids | to fill in code for them? | Guid_NewGuid wrote: | Haha you're pretty much describing me. I think autocomplete | overlaps with spellcheck in a text editor. You won't improve | your spelling by relying heavily on a spell checker but it | won't really affect your vocabulary either and enables | everyone to write syntactically correct text. | | Programming is more about telling the story or writing the | speech than the spelling of the text. Treating code as | manipulating plain text just freaks my brain out as the wrong | abstraction level. But as I try and remind myself 'different | people like different things and that's ok'. | crispyalmond wrote: | I fully agree to an extent. Some APIs (e.g. Android) are huge | and a pain to type in Java without some sort of completion. | Maybe I'm just lazy or used to C, but Java makes having an | IDE almost essential. | foolfoolz wrote: | when do you ever not have one? work isn't like camping or | something. you always have your computer | kevin_thibedeau wrote: | When using a language without an IDE. In a shell. At home. | jenscow wrote: | Ah, I don't know... I don't depend on an IDE, they just make | things much quicker and easier for me. | | And let's say I do depend on one.. it's not like I'm going to | be dropped at a computer where I'm not allowed to use an | IDE... but it would just take a day to adjust. | | For me, anyway. | thayne wrote: | > it provides all of the features from vim I would want anyway, | but in a modeless format | | > vim-like functionality with modeless editing | | > nano is a quite capable editor in its own right | | but the only features that are mentioned are syntax highlighting | and hiding the help text. | | Looking at the man pages for nano, it _is_ a lot more capable | than I had previously though (though not as capable as vim or | emacs), but the author doesn't really go into that. | filmgirlcw wrote: | Nano (or pico) is great for very small, quick edits. I often use | it when setting up a VPS for the first time before configuring my | editor's remote SSH exten B sion (or in the past, installing | rmate). I wouldn't personally use it for more than just a quick | change, but to each their own! | hughrr wrote: | Quite impressive. | | I actually don't use nano though only because it's not always | there. I learned a long time to pick a narrow subset of | ubiquitous tools to know really well, compose those and leave it | at that. If I'm dumped in single user mode somewhere with no | network, or on a system I don't have the ability to install | packages on, a usable vi implementation is always available. | | Going back a couple of decades a colleague was stuck on a Solaris | box because he needed pico installed and Miss root was off sick. | He learned vi that day. | | Incidentally I used to embarrassingly suck at vi until I | completely hosed a couple of systems. | tpoacher wrote: | It's worth pointing out that many distros ship with a positively | prehistoric version of nano (i.e. v2.9), whereas the latest | version is actually lightyears better. | | I agree with the author completely. | | As for the "yes but vim keystrokes" apologists, honestly I have | yet to find something truly important I can do with significantly | less keystrokes in vim. (especially if you factor in | programmability and macros). ___________________________________________________________________ (page generated 2021-08-13 23:00 UTC)