I’m getting back into coding and I’m going to start with python but I wanted to see what are some good IDEs to write the code. Thanks in advance.

    • toynbee@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      4 days ago

      Apologies in advance for the WOT. I will not be offended if you don’t read it, but I did try to include helpful information.

      So, for reference, though this command should work it’s not the correct way to exit vim (for several reasons). Also, if nano works for you, then there’s nothing wrong with using it. IMHO you lose a lot of the power of vim, but some of the beauty of linux is that customization is big part of it. One of the smartest and most linux-knowledgeable people I know uses nano and can outperform me in basically every linuxy way.

      Also, a caveat: I know some stuff, but I’m not an expert in anything, let alone neat stuff like this. The text below is accurate to the best of my knowledge, but may not represent the whole of the paradigm.

      Now, to answer your question: vim is what’s called modal. You have two primary modes: editing (amusing edit: this is also called “insert” mode) and command. Editing mode is what it sounds like: When you’re editing a file. This mode is usually entered by pressing a button that starts the process of changing the file - stuff like i (for insert mode, which just starts adding text you type where your cursor is) or o (which starts adding text you type on the next line) or many others. This mode is exited by pressing Esc, which leaves you in command mode. In command mode, you can start with a :, which generally goes to a field (not the right word, but the one I’m using) at the bottom of the window/screen. This is the command. The command can be extremely complex and even chained. People who are more into vi(m) than I am call it a sentence, I believe, but I might be misinterpreting that. (You can also type things without a : but those will have different kind of impact.)

      So, to run the command I posted above, you would start by pressing Esc to make sure you were in command mode (if you already are it will just maintain command mode). Then you would type : to start the command (or possibly sentence). Then you would type the !, which tells vim that this command is to be run in the shell, rather than as a vim command. Then you would type pkill vim which is a command that would tell the shell to identify a process called vim and kill it. This would exit vim but is, again, not the correct way to do so.

      The usual way to exit vim correctly would be to press Esc to make sure you were in command mode, then type one of the following:

      • :wq (write and quit)
      • :q (quit without saving the file)
      • either of the above with a ! after it (e.g. :wq! or :q!) which tells it to ignore errors (:q will complain if you have made any unsaved changed but adding ! will ignore those complaints)
      • press ZZ (I’ve not used this myself, but I think it’s equivalent to :wq)

      One last aside: If you do decide to try to use vim, this is a useful resource: https://vimschool.netlify.app/introduction/vimtutor/

      edit: Very small formatting changes.

      edit 2: Just some random facts because vim is cool:

      • You can type :! with no other text to see the terminal from which you launched vim, then press enter to return to your active vim session, which can be useful if you’re trying to replicate text in an environment where you can’t copy and paste (and probably other circumstances)
      • Adding % before any command applies it to the whole file (rather than, for example, just one line) which can be useful if you’re trying to sort a file (and in other circumstances):
      %!sort
      

      (without the % it would just try to sort the current line, which likely wouldn’t be too useful since I believe it only goes by the first character of the line unless you present other arguments)

      • 737@lemmy.blahaj.zone
        link
        fedilink
        arrow-up
        2
        ·
        4 days ago

        to apply a shell command to a single line you need :.!command. :!command just runs it normally and outputs stdout to the terminal instead of inserting it into the buffer.

      • Jakeroxs@sh.itjust.works
        link
        fedilink
        arrow-up
        1
        ·
        4 days ago

        Very interesting, thank you!

        That does help contextualize my experience a bit, I was very much not expecting a “mode” so I started trying to just type and things were happening lmao. Much appreciated, I might have to give it another try next time, I see there’s a lot of love for the vi family in general, almost cult like ;) but a good sign that it is a really powerful tool once you understand it.

        • toynbee@lemmy.world
          link
          fedilink
          arrow-up
          2
          ·
          3 days ago

          Thank you for being receptive.

          As I said, I’m not expert, but I am a fan. If you decide to try it out and are looking for guidance, I (and, separately, probably several communities) would be happy to help as best we’re able.