• 0 Posts
  • 30 Comments
Joined 1 year ago
cake
Cake day: August 13th, 2023

help-circle




  • For just regular text to be consumed by humans, it’s not that great, you probably want a word processor.

    It shines when you do a lot of more structural editing, stuff like “change all quotation marks on this line to be single tick”, “copy everything inside these parentheses and paste it after the equals sign”, “make the first word on the next five lines uppercase”, these are the type of things vim make easy that are not easy in other editors.

    So it’s great for code and config files. Markdown is borderline. You can have a setup that lets you live view how the markdown renders while editing in vim, so it can be pretty good, but the advantage might be a bit dubious.



  • tl;dr: Run vimtutor, learn vim, enjoy life

    It’s extremely powerful, for mostly the same reason that it’s incomprehensible to newbies. It’s focused not on directly inputting characters from your keyboard, but on issuing commands to the editor on how to modify the text.

    These commands are simple but combine to let you do exactly what you want with just a few keypresses.

    For example:

    w is a movement command that moves one word forward.

    You can put a number in front of any command to repeat it that many times, so 3w moves three words forward.

    d is the delete command. You combine it with a movement command that tells it what to delete. So dw deletes one word and d3w deletes the next three words.

    f is the find movement command. You press it and then a character to move to the first instance of that character. So f. will move to the end of the current sentence, where the period is.

    Now, knowing only this, if you wanted to delete the next two sentences, you could do that by pressing d2f.

    Hopefully I gave a taste of how incredibly powerful, flexible, yet simple this system is. You only need to know a handful of commands to use vim more effectively than you ever could most other editors. And there are enough clever features that any time you think “I wish there was a better way to do this” there most certainly is (as well as a nice description of how).

    It also comes with a guide to help you get over the initial learning curve, run vimtutor in a console near you to get started on the path to salvation efficient editing.






  • Not chmod related, but I’ve made some other interesting mistakes lately.

    Was trying to speed up the boot process on my ancient laptop by changing the startup services. Somehow ended up with nologin never being unset, which means that regular users aren’t allowed to log in; and since I hadn’t set a root password, no one could log in!

    Installed a different version of Python for a project, accidentally removed the wrong version of Python at the end of the day. When I started the computer the next day, all sorts of interesting things were broken!





  • This is likely because docker runs Linux in a VM on MacOS right?

    We’ve had similar problems with stuff that works on the developers Mac but not the server which is case sensitive. It can be quite insidious if it does not cause an immediate “file not found”-error but say falls back to a default config because the provided one has the wrong casing.


  • Well completion-ignore-case is enough to solve this particular problem, the other options are just sugar on top :)

    I’m going to add completion-prefix-display-length to these related bonus tips (I have it set to 9). This makes it a lot easier to compare files with long names in your tab completion.

    For example if you have a folder with these files:

    FoobarSystem-v20.69.11-CrashLog2022-12-22 FoobarSystem-v20.69.11.config FoobarSystem-v20.69.12 FoobarSystem-v20.69.12-CrashLog2023-10-02 FoobarSystem-v20.69.12.config FoobarSystem-v20.69.12.userprofiles

    Just type vim TAB to see

     ...1-CrashLog2022-12-22   ...1.config   ...2   ...2-CrashLog2023-10-02   ...2.config   ...2.userprofiles
    $vim FoobarSystem-v20.69.1
    

    GNU Readline (which is what Bash uses for input) has a lot of options (e.g. making it behave like vim), and your settings are also used in any other programs that use it for their CLI which is a nice bonus. The config file is ~/.inputrc and you’d enable the above mentioned options like this

    $include /etc/inputrc
    
    set completion-ignore-case on
    set show-all-if-ambiguous on
    set completion-map-case on
    set completion-prefix-display-length 9