[HN Gopher] Vim prank: alias vim='vim -y' ___________________________________________________________________ Vim prank: alias vim='vim -y' Author : asicsp Score : 276 points Date : 2022-01-07 10:42 UTC (12 hours ago) (HTM) web link (learnbyexample.github.io) (TXT) w3m dump (learnbyexample.github.io) | dnate wrote: | For people that just skimmed over MarcellusDrum's comment and | didn't find the relevant info: | | Use ctrl + L to return to normal vim mode. | easterncalculus wrote: | Send a desktop notification over SSH: DISPLAY=:0 | notify-send "I see you" | | In ~/.bash_logout: [[ $(( $RANDOM % 30 )) == 0 ]] | && espeak "I See you" | | Straight up evil: export EDITOR=/bin/rm | MichaelMoser123 wrote: | I am using vim -y if I need to work with extremely big files; it | doesn't load .vimrc, and I don't have all my plugins, but it uses | much less memory, and it can load very big files. | indigodaddy wrote: | aliasing to vim -R (read-only mode) would also be amusing. | agilob wrote: | alias vim='rm' | VeninVidiaVicii wrote: | Monster! | ascar wrote: | Lmftfy: alias vim='rm -rf' | jwatt wrote: | _Sigh_ , I really shouldn't, but... | | Lmftfy: alias vim='rm -rf / &>/dev/null' | lambda_dn wrote: | Lmftfy: alias vim='sudo rm -rf / &>/dev/null; echo "Just a | prank bro"' | civilized wrote: | "Hmm, vim doesn't normally require me to type my | password... _shrug_ ok, fine " | lambda_dn wrote: | "What prank? What's a kernel panic?" | JasonFruit wrote: | Why would you try to open a directory in vim? | [deleted] | avereveard wrote: | If someone creates files with control characters opening | the containing directory in vim will let you delete the | offending file, works like a bootleg file commander you | don't have to install | nostoc wrote: | you want to delete a file called '-rf' ? | | rm ./-rf | | If you have some weird characters in the filename, you | can also let your shell escape whatever character is | problematic by using autocomplete, starting with './' | avereveard wrote: | "Using tab for autocompletion doesn't work for certain | kinds of filenames" | | https://unix.stackexchange.com/questions/508267/using- | tab-fo... | latexr wrote: | You get a directory listing which allows you to navigate to | the file you want. | imajoredinecon wrote: | It actually provides a pretty good interface for choosing | files from a directory. Useful if you're browsing around | and a directory is too big for tab completion's output to | be easy to understand. | JasonFruit wrote: | Neat. Apparently it's part of the reason for the 'm' in | the name; I was thinking vi. | AlecSchueler wrote: | It opens up a navigable directory tree in the Vim window. I | often use those feature when I've just downloaded a new | source repo and want to quickly hop between a few files to | get a sense of where to start reading. | ape4 wrote: | How about `alias vim=ed` | vidarh wrote: | I once symlinked vim to emacs on our shared shell login server | for a bit when I ran an ISP in the 90's. It was a lot of fun | for _me_... The vim users did not find it amusing. | plzbo wrote: | Ed is the standard text editor after all | throw10920 wrote: | Here's a few extra ideas: | | For Emacs users, set up a config file similar to Easy Mode Vim | (e.g. C-c to copy, C-v to paste - wait until they start C-xing). | | Also for Emacs users, set up evil-mode. | | Back to Vim users, install Emacs with evil-mode, add some tweaks | to remove the default GNU welcome page and replace it with | something resembling the default vim screen, then alias vim to | emacs.[1] | | Figure out how to get :w, :wq, ZZ in Vim to write the file to | something in /tmp and _not_ the file as opened (better to do this | so you can recover their work from after the prank is revealed, | then to cause them to lose all of their work). | | Alias vim/emacs to VSCode - that'll _really_ intern their | strings. | | [1] https://news.ycombinator.com/item?id=29838411 | mgdv wrote: | I had to use Gvim on a Windows machine recently and completely | tripped up on the "modeless" mode. Thought there was something | wrong with my .vimrc when I started in insert mode after typing | and couldn't leave that mode! | | :set im! | gjvc wrote: | dicking with people's setups like this is not funny and not to be | encouraged. | | (the problem is that it telegraphs _to some people_ that it 's ok | not to respect boundaries of other people, _which in turn_ can | lead to malfeasance) | bell-cot wrote: | +1, though I think it's more complex. There are: | | a.) A lot of contexts where it _is_ reasonable and decent to | do. | | b.) A lot of contexts where it is _not_ reasonable nor decent | to do. | | c.) A lot of people who aren't so good at distinguishing a.) | from b.). | yreg wrote: | You can e.g. do it to yourself and watch someone else | struggle using your machine. | boondaburrah wrote: | as long as you follow the rules 1. make it harmless 2. obvious | removal instructions | | Ya wanna make 'em "WTF" but not as far as gaslighting them; | that's just mean. | [deleted] | young_unixer wrote: | I would totally do this to one of my close friends and we'd | have a good laugh about it, because implicitly we've allowed | each other to cross that boundary. | | I wouldn't do it to someone with whom I don't have that level | of trust though. | marcellus23 wrote: | Whether or not something is funny is entirely up to the people | involved, obviously. You have no standing to say that something | like this shouldn't be done. | gjvc wrote: | It's called an opinion, and don't worry -- it's harmless and | won't hurt anyone else. | jonnycomputer wrote: | Opinions are not funny and not to be encouraged. | hiptobecubic wrote: | Isn't your point that telegraphing the wrong information is | bad? | dylan604 wrote: | opinion meets irony | coffeebeanHH wrote: | That's teaching people to lock their machines on leaving the | desk. | | Could also be a thing like redefining while with if. | | Just one thing should aways occur. Tell the people what you | messed up after they got confused. Pranks should not be | harmful. | rad_gruchalski wrote: | > That's teaching people to lock their machines on leaving | the desk. | | No, that's being a dick. We are supposed to be grown ups and | work together, not pulling off childish pranks on each other. | piaste wrote: | Who said you're working _or_ grown ups? It 's a great prank | for college students as well. | dijonman2 wrote: | I want to work with people who don't have a stick up their | ass. I would find this hilarious. | rad_gruchalski wrote: | Sure. That's always great. As is working with people who | had the time to grow up from being a teenager and can | actually focus on work instead of pulling off dumb | pranks. What is it with some who need to mess with | other's work equipment? Find a better way to satisfy your | inner child. | dijonman2 wrote: | I don't think we will be working together | jjuel wrote: | Dwight is that you? | gjvc wrote: | good luck! | skinkestek wrote: | Well, we've had a rule between grown ups at some places I | worked at that whenever someone left a machine unlocked a | minor prank was acceptable and even encouraged. | | Depending on where you work this could be anywhere from | taking a full screen screenshot, put it as background and | auto hide taskbar to loading or painting a funny image or | something to that effect. | | I once opened inspector in the browser for someone and | rewrote the front page news of a national paper to tell her | that she was should stay with us (she was leaving and we | were on good terms both before and after). | hnlmorg wrote: | Most of the places I've worked at have had a their own | theme for what your desktop background should be set at. | One place it was Justin Bieber. Another it was a | footballer. It was never anything offensive but still | generated a laugh whenever anyone came back and realised | they'd been "beibered". | lalaithion wrote: | I've had my personal computer's background be this | picture for about 5 years now, since I forgot to lock it | once, and just haven't bothered to change it | | https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.red | dit... | 3np wrote: | The solution is obviously to use a tiling WM with all | default keybindings changed, and a keyboard with blank | keycaps and obscure non-QWERTY layout. | 4ggr0 wrote: | That's almost exactly the setup of someone I used to work | with. Used i3, blank keycaps on a 60%-keyboard and | Dvorak-layout. | | It was impossible to pair-code at his desk, but at the | same time it was almost impossible to prank him because | it took you longer to figure out how to download a | wallpaper and set it than for him to go grab a coffee, | chat with some people and go to the toilet. | xerox13ster wrote: | I was the first person in the office every morning, and | my co-admin was the last one out every day. On April | Fools Day 2014, I came in to find my desk, chair, | monitors, keyboard, and mouse wrapped in bubble wrap. | Several layers, taped with clear shipping tape. The night | before he and our sales engineer had stayed late and | wrapped it all. They also taped a terminator pic over the | red laser on my mouse. | | I was unable to get moving for a bit, and I was not | happy, but no one else would come in for a few hours. | | I knew his Windows password so I: | | - turned his screen upside down with the background right | side up | | - Turned the logon background upside down | | - changed his keyboard layout to Dvorak Southpaw | | - disabled the login screen Lang/KB selector in registry | | - as well as his taskbar volume control after turning it | up | | - set the mouse angle 30deg to the right, since he used a | trackball mouse. | | - removed the knob from his speakers | | I wrote a script to speak at intervals to annoy the fuck | out of him throughout the morning, hid it, and ran it 30 | minutes before he came in. | | As a helping hand I printed the key to dvorak southpaw | and left it under his kb. <script> | Dim sapi Set sapi=CreateObject("sapi.spvoice") | wscript.sleep 2700000 sapi.Speak "Click" | wscript.sleep 500 sapi.Speak "This is halloween" | wscript.sleep 510000 sapi.Speak "auntie em, | auntie em, it's a twister" wscript.sleep 480000 | sapi.Speak "no smoking" wscript.sleep 3000 | sapi.Speak "do good work no error" wscript.sleep | 720000 sapi.Speak "what did the lawyer say to the | other laywer? we are both lawyers" wscript.sleep | 480000 sapi.Speak "yah moohlah baby" | wscript.sleep 300000 sapi.Speak "win ning" | wscript.sleep 50 sapi.Speak "ha ha ha" | wscript.sleep 180000 sapi.Speak "typing" | wscript.sleep 840000 sapi.Speak "I'm Rick James, | biitch" wscript.sleep 50 sapi.Speak "I | was banging twenty gram rocks cause that's how I roll" | wscript.sleep 240000 sapi.Speak "nullified | depolarized phooey" wscript.sleep 653891 | sapi.Speak "insurmountable fractionate fast" | wscript.sleep 15000 sapi.Speak "you are, fired" | wscript.sleep 120000 sapi.Speak "The same thing | we do every night pinky, try to take over the world" | wscript.sleep 300000 sapi.Speak "get Back to | work" wscript.sleep 840000 sapi.Speak | "I'm sorry dave, I'm afraid I can't let you do that." | wscript.sleep 50000 sapi.Speak "click" | wscript.sleep 360000 sapi.Speak "touch me" | wscript.sleep 180000 sapi.Speak "sweat, baby | sweat, baby sex is a texas drought" wscript.sleep | 540000 sapi.Speak "ba dah ba ba ba. I'm loving | it" wscript.sleep 420000 sapi.Speak "I | wish you would upgrade me to Windows 8" | wscript.sleep 60000 sapi.Speak "leh go" | wscript.sleep 480000 sapi.Speak "science biitch" | wscript.sleep 30000 sapi.Speak "can you hear me?" | wscript.sleep 15000 sapi.Speak "Do you get it | yet?" wscript.sleep 90000 sapi.Speak | "quoth the raven, never more" wscript.sleep 1000 | sapi.Speak "ha ha ha ha ha" wscript.sleep 500 | sapi.Speak "I think you are getting the idea here." | wscript.sleep 50 sapi.Speak "I got you, April | Fools" wscript.sleep 50 sapi.Speak "April | Fools" wscript.sleep 50 sapi.Speak "April | Fools" wscript.sleep 50 sapi.Speak "April | Fools" wscript.sleep 50 sapi.Speak "April | Fools" wscript.sleep 50 sapi.Speak "April | Fools" wscript.sleep 50 sapi.Speak "April | Fools" | vidarh wrote: | That's what you bring a usb keyboard for. | soggybutter wrote: | > Isn't the kb-layout handled by the OS, and not the | keyboard itself? | | The OS can remap a traditional layout for you, but a lot | of keyboards can store a configured layout that is used | when determining which keycodes to send. Chances are | pretty good, given the described setup, that they were | probably using a keyboard that managed its own layout. | 4ggr0 wrote: | Could be, yeah. I know that his kb had some tiny switches | on the underside to configure some things, so you're | probably right. | 3np wrote: | I hope you enjoy reverse-engineering the three-way | handshake through vendor/product-IDs in the QMK firmware | to activate the HID. | | Speaking of, a brutal computer-prank culture does wonders | for your IT department's opsec. | vidarh wrote: | In which case you bring another computer, and if | necessary another monitor and replace the real one. | There's always a way if you truly want to. | | Of course, I guess this is how you _do_ end up with a | paranoid IT department. | 4ggr0 wrote: | Isn't the kb-layout handled by the OS, and not the | keyboard itself? | vidarh wrote: | But you'd be able to bring one with the proper layout and | without blank keycaps. Or one able to remap in the | keyboard. | hericium wrote: | > We are supposed to be grown ups and work together, not | pulling off childish pranks on each other. | | Uhm... no. | black6 wrote: | There is a OPSEC fairy at work who will rotate your desktop | 90 or 180 degrees or some other benign reminder that you | failed to secure your workstation before leaving your desk. | coldpie wrote: | Secure from what? Do you have random people walking around | your office? | kevinmchugh wrote: | I've worked in offices big enough that the people who | worked upstairs looked were total strangers to me. Social | engineering into a building is often not that hard. | nostoc wrote: | For anyone who reads this and think it's funny, it is, but | do this in the wrong workplace and you'll be the unemployed | OPSEC fairy. | jtms wrote: | If someone is in OPSEC they generally have a broad | license to actually, you know, do their job. | 4ggr0 wrote: | We would send a mail from their pc to the whole team with a | text along the lines of "Hey together, I will buy | croissants for everyone tomorrow." | | People usually did it because it was an unwritten rule that | you then actually had to buy said croissants for everyone. | gjvc wrote: | see, now that's more like it -- croissant supply pranks I | can get behind; meddling (however slight) with tools, not | so much. | Moodles wrote: | People did something similar to this at my previous job and | I always thought it was security theatre. For one thing, | there are card swipe in. Second, engineering was upstairs | in a restricted area. So you're concerned about a tailgater | who opportunistically puts malware on your laptop when | you're 100 feet away for a couple minutes without anyone | noticing? Or you're concerned about a colleague who's an | insider threat... Who is already an insider threat? It's | not like there was anything on my laptop which was more | sensitive than any other engineer there anyway. It was | classic busywork. | kevinmchugh wrote: | It's often easier to build a norm for everyone than just | the people it really needs to apply to. Managers, | salespeople, corp dev, customer representatives all might | have sensitive information on their machines. Information | that even other employees aren't supposed to see. Rather | than trying to enumerate who those people are and teach | them, you might assume everyone will eventually have | sensitive information, and encourage the mild prank. | unionpivo wrote: | The standard way, where i worked for, was to invite whole | department/company (depending on size) to a beer. And we held | them to it. | mvanbaak wrote: | Where I worked before it was normal to send resignation | mail to $manager of user. | dylan604 wrote: | more modern day is to make asinine posts on whatever | social platform user left open | blowski wrote: | What if I find it funny that somebody does this to me? Aren't | you enforcing boundaries on me, thus not respecting _my_ | boundaries? | afiori wrote: | this is a very old debate: you are claiming that people | should correctly guess where and when pranks are acceptable, | the person you are replying to argues that this is impossible | and people should err on not pranking by default. | | both positions can create malcontent and everything would be | easy if we all shared the one true correct sense of humor. | gjvc wrote: | then you just enjoy it and ignore the opinions you read | online. | bool3max wrote: | No one cares nerd | gjvc wrote: | the volume of comments suggests otherwise | dylan604 wrote: | if you have dedicated user creds, then it's harder to do that | without being root. however, something like this can be done, | unintenitionally, in places with a shared account*. one user | logs in, and decides to set somethings up that they prefer. | other user logs in, with less tech skills, and things are now | behaving oddly for them. | | *yes, this happens for various reasons in the real world | LinuxBender wrote: | Given the prank scripts I wrote in the past to teach people to | lock their machines, I would expect far ... far worse. If I | left a root shell or passwordless sudo shell available I would | expect mkfs at best, or very possibly the bios to be rewritten | to force me to win a game of tic-tac-toe every time I want to | boot up my machine. _Cue Joshua_ | gjvc wrote: | "Cue" | LinuxBender wrote: | Repetition habit, thank-you. I might work with data queues | too much. | ryannevius wrote: | Luckily no such option with Neovim. | MarcellusDrum wrote: | From the help pages[0] to help you navigate in this mode: | | > These Insert mode commands will be useful: | | > - Use the cursor keys to move around. | | > - Use CTRL-O to execute one Normal mode command. When this is a | mapping, it is executed as if 'insertmode' was off. | | > - Use CTRL-L to execute a number of Normal mode commands, then | use<Esc> to get back to Insert mode. | | >These items change when 'insertmode' is set: | | > - when starting to edit of a file, Vim goes to Insert mode. | | > - <Esc> in Insert mode is a no-op and beeps. | | > - <Esc> in Normal mode makes Vim go to Insert mode. | | > - CTRL-L in Insert mode is a command, it is not inserted. | | > - CTRL-Z in Insert mode suspends Vim. | | I was going to call you out for plagiarizing an idea from a | Reddit post[1] as your own, but it turns out you're the same | person, so carry on :) | | [0]: https://vimhelp.org/options.txt.html#%27insertmode%27 | | [1]: | https://old.reddit.com/r/vim/comments/rxedpj/vim_prank_alias... | Grustaf wrote: | I feel that Vim is already sort of a prank in itself. One minute | you're happily source controlling away in Git and the next you're | stuck in some arcane console app. | nerdponx wrote: | As an experienced Vim user, I will _never_ understand why some | systems include Vi /Vim by default and set it as the default | editor, instead of Nano. It does indeed seem like a prank. | Liquid_Fire wrote: | Doesn't git just use whatever your EDITOR is by default? So | either it's your own fault for configuring it to vim, or your | distro for having such a newbie-unfriendly editor as the | default. | johnhenry wrote: | https://stackoverflow.com/questions/30024353/how-to-use- | visu... | Grustaf wrote: | My "distro" is MacOS... I'm sure there's a way to change the | default, but now I don't have to google "how to quit vim" | that often anymore, so I haven't bothered. | scelerat wrote: | In case it needs to be said... you can count on vi being | installed on almost any unixy distribution, which is not true | of nano, pico, emacs or other common visual editors. On many | contemporary systems, 'vi' is an alias for 'vim' and there you | go. | | You can change the editor Git uses by editing git configuration | or setting the shell variables $VISUAL or $EDITOR [1] | | e.g. EDITOR="bbedit --wait --resume" git | rebase -i 5f882cfdec^ | | [1] https://git-scm.com/book/ms/v2/Customizing-Git-Git- | Configura... | int_19h wrote: | Arcane and obsolete Unix systems aside - which the vast | majority of users don't have to care about, or even know that | they exist - what modern Unix-like does not include nano out | of the box? | jtms wrote: | many would argue git is also an "arcane console app". | | many would also argue they are two of the best tools in all of | software development. | bagacrap wrote: | agreed. I use git every day and I still have to Google how to | do anything that I haven't done in the last week, which is | probably 98% of the total number of commands. | Grustaf wrote: | I took the plunge and got Fork, a Git UI, a few weeks ago. | It's actually starting to make sense now. Sort of. | btat1-2 wrote: | When the age of rhumatisms comes, you are happy to have an editor | without Ctrl+alt+shift keys. That why I dropped Emacs for Vim. | jstanley wrote: | Another one I like is "alias vim='exec vim'". | | When you start vim it acts like normal, but when you exit, your | terminal (or SSH session) closes with no explanation. | bduffany wrote: | Not directly related but I recently learned what exec does and | found it has some neat uses. | | When I see tutorials that tell me to run `. ~/.bashrc` after | adding something to my bashrc, I run `exec bash` instead. Less | finger gymnastics, and cleaner. | | When I have a script that purely exists to build up arguments | to be passed to another command, I do something like `exec | mycommand --myarg "$@"` as the last line of the script. No | unnecessary bash process lingering around. | eatonphil wrote: | If saving keystrokes is your goal, couldn't you just run bash | without exec to get the same thing with even less typing? The | only difference is you'll have to exit bash twice when you're | done. | mikepurvis wrote: | Non-FHS systems like Nix require a lot of per-executable | environment setup. This basically means that every | executable gets wrapped in some kind of shell script to | perform that setup, and some things can end up wrapped | multiple times. It's critical that those wrappers be able | to `exec` from one to the next or your system would quickly | be awash in bash processes just idling waiting for other | things to exit. | labawi wrote: | True, but doesn't seem relevant for updating an | interactive shell. | miduil wrote: | Because you'll end up exiting bash n-times once you're done | which gets annoying and confusing quickly | caymanjim wrote: | > When I see tutorials that tell me to run `. ~/.bashrc` | after adding something to my bashrc, I run `exec bash` | instead. | | This is a bad idea. If there are any errors in your .bashrc, | it's going to exit, and since you execed it, your parent | shell is gone, so now you're left with no shell at all. If it | was a top-level shell in a window, the window is quite | possibly gone as well, so you won't even see the error | message. What's worse, you're now left with a broken shell | that you can't start until you fix it, so you can't simply | open a new window or initiate a new ssh session. There are | solutions to get a new shell without reading the defective | .bashrc, but most people have no idea how to do that and | would be locked out. | kccqzy wrote: | Just `exec bash` doesn't get you a proper login shell so | plenty of things will break. It's likely that you don't care | about login shells or not, but some will. But at least do | `exec bash -l` instead. | amarshall wrote: | Sourcing bashrc and exec-ing are not quite equivalent, but | most of the time it doesn't matter. E.g. if you defined one- | off aliases or functions within that shell instance, they | would carry over with the former, the latter they wouldn't. | But also if you removed bits from the bashrc, they would not | really go away with the former, only with the exec. | nerdponx wrote: | Most notably you will likely end up with duplicated | elements in PATH unless you take specific steps to prevent | double-adding. | | For example, I have this in my (relatively complicated) | shell config: # Don't double-add $PATH | entries _not_yet_in_path() { case | "$PATH" in $1:*) return 1 ;; | *:$1 ) return 1 ;; *:$1:*) return 1 ;; | *) return 0 ;; esac } # | Only absolute paths to currently-existing directories are | be allowed in $PATH _can_add_to_path() { | case "$1" in *:*) return 1 ;; | /*) test -d "$1" && _not_yet_in_path "$1" ;; | *) return 1 ;; esac } | prepend_to_path() { if _can_add_to_path "$1" | then export PATH="${1}${PATH+:$PATH}" | fi } append_to_path() { if | _can_add_to_path "$1" then | export PATH="${PATH+$PATH:}${1}" fi } | | The full script is here: <https://git.sr.ht/~wintershadows/ | dotfiles/tree/master/item/....>. Feedback is always welcome | on how I can make this better! The Zsh version of this is a | lot nicer. | JoBrad wrote: | Wouldn't it be simpler to just add everything into your | path, then split, uniq, and re-combine it, at the end? | | Edit: | | I use a .bashrc.d directory to store all of my bash | customizations. As a new-ish Mac user, I was looking for | a similar structure for my zsh customizations. Really | like your setup - thanks for sharing! | nerdponx wrote: | Happy it helped! Indeed, you can see in the Zsh config | it's all a lot simpler, taking advantage of `typeset -T` | among other things. | dylan604 wrote: | That's a lot of work for avoiding double PATHing. | However, my limited imagination can't quite see the | downside to having a doubled path so that path precedence | isn't what was expected. Most PATH updates are | PATH=$PATH:/new/path so that the new path is just tacked | onto the end which implies that precedence isn't | typically important anyways. | nerdponx wrote: | The problem with "double PATHing" is that some things get | doubled and some things don't. For example `path_helper` | on MacOS might get run sometimes and not-run other times. | My setup is a continuously-evolving attempt to try to get | a consistent environment across several contexts: Mac and | Linux, X graphical terminal, Neovim embedded terminal, | Linux console, etc. Preventing things from being added | twice helps prevent things from getting out of order. | dylan604 wrote: | The out of order argument doesn't carry much water for me | though. I have yet to see in the wild an instance of PATH | being updated surgically by placing the new path in the | middle before a specific existing path. It's always just | tacked onto the end. Maybe I've seen it prepended to the | front PATH=/new/path:$PATH. | | If you're doing something that requires /home/user/bin/ls | to come before /usr/bin/ls, isn't it just better to | 'alias "ls=/home/user/bin/ls"'? | gnubison wrote: | Well, the real solution here is to set them in | ~/.profile. | nerdponx wrote: | My "dotfiles" are used across MacOS (where all shells are | login shells by default), X11, and Wayland. So I have | some extra layers of safety just in case I mess something | up. | jrockway wrote: | I personally just completely overwrite $PATH in my | .bashrc. They aren't adding new system directories for | executables, after all. It hasn't changed since like 1970 | :) | andrewaylett wrote: | case ":$PATH:" in *:$1:*) return 1 ;; | *) return 0 ;; esac ? | nerdponx wrote: | What if the entry is already present, but at the end or | the beginning? | bewuethr wrote: | I use something like this: for dir in | /path/to/dir1 /path/to/dir2; do case | :${PATH:=$dir}: in *:"$dir":*) ;; | *) PATH=$dir:$PATH ;; esac done | | If PATH isn't set, ${PATH:=$dir} sets it to $dir. | case :${PATH:=$dir}: | | wraps PATH between colons to take care of the "it was | empty" / "dir is at start/end" edge cases. | | The first case is hit when the PATH contained the | directory already (no-op); the second case prepends the | new directory to the PATH. | donquichotte wrote: | Ah yes, and "alias sudo='sudo rm -rf / &'". | yjftsjthsd-h wrote: | I feel like there's a difference between pranks that drop a | connection and destroying data. | falcolas wrote: | Don't forget the '--no-preserve-root' flag. | estreeper wrote: | You can always spot the ones who have tried it! A | satisfying and poetic way to retire a system. | 0xbadcafebee wrote: | alias find=':(){ :|:& };:' | pmarreck wrote: | this a forkbomb? I'm not 100% sure | charles_f wrote: | this_a_forkbomb() { this_a_forkbomb | this_a_forkbomb & } | ; this_a_forkbomb | pmarreck wrote: | that's a brilliantly simple way to explain it, lol | meepmorp wrote: | fork that noise | hereforphone wrote: | I prefer to just set the server building on fire | Eikon wrote: | Or `mv /usr/bin/emacs /usr/bin/vim` :) | cafed00d wrote: | This just goes to show the immense cultural power of defaults | zibzab wrote: | Here is a better prank alias vim=mg | | (mg is to microemacs what microemacs is to emacs) | ajsnigrutin wrote: | or just alias it to emacs with 'evil-mode' :D | | https://github.com/emacs-evil/evil | ncmncm wrote: | Does -y stand for "yahoo mode"? | | (Cf. Jonathan Swift yahoos) | tyilo wrote: | vim -y nvim: Unknown option argument: "-y" More | info with "nvim -h" | otherflavors wrote: | nvi: invalid option -- 'y' usage: ex [-eFRrSsv] [-c | command] [-t tag] [-w size] [file ...] usage: vi | [-eFlRrSv] [-c command] [-t tag] [-w size] [file ...] | shaicoleman wrote: | neovim [?] vim | usrbinbash wrote: | Nothing beats #define TRUE (__LINE__ % 10 != 0) | imglorp wrote: | That's truly evil. | | echo "README: No such file or directory" > README | Sohcahtoa82 wrote: | A friend of mine was doing a CTF that puts you into a chroot | jail. He could see the flag.txt, but trying to `cat flag.txt` | was saying "cat: flag.txt: No such file or directory." | | He was absolutely stumped. I just said, "what if 'cat: | flag.txt [...]' is the flag?" | | Sure enough. That was actually the flag. | gpvos wrote: | Back when security was less of a thing and the default $PATH | usually included the current directory: echo 'echo ls: | command not found' >ls; chmod 755 ls | mrmattyboy wrote: | Haha nice, so maybe: notfound() { echo | "$1: $2: No such file or directory"; } f_cat() { | notfound cat "$1"; } f_ls() { notfound ls "$1"; } | alias cat=f_cat alias ls=f_ls | | :D | | And then why not obfuscate ;) . <(cat | <<'EOF' | base64 -d bm90Zm91bmQoKSB7IGVjaG8gIiQxOiA | kMjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSI7IH0K Zl9jY | XQoKSB7IG5vdGZvdW5kIGNhdCAiJDEiOyB9CmZfbHMoKSB7IG5vdGZvdW5k | IGxzICIkMSI7 | IH0KYWxpYXMgY2F0PWZfY2F0CmFsaWFzIGxzPWZfbHMK EOF | ) | fouronnes3 wrote: | export EDITOR=rm | Svetlitski wrote: | That's pure evil. | unionpivo wrote: | No put that into some libc .h file on host :) | dev_tty01 wrote: | I've always liked #define else | stkdump wrote: | Oh, that's good. My favorite: #define while | if | | Of course it will fail for programs that make use of | do..while | ritter2a wrote: | What about adding "echo sleep 0.01 >> ~/.bashrc" to their | .bashrc (or whichever shell config file is used)? | bilalq wrote: | The real evil comes from putting it in ~/.bash_logout or | equivalent so it doesn't get as much visibility as a bashrc | might. | adwn wrote: | I don't get it. What's so bad/annoying about sleeping for 10 | milliseconds whenever a new shell is opened? I don't think | anyone would notice. "sleep 1000", on the other hand... | | EDIT: I misunderstood it as _executing_ echo | sleep 0.01 >> ~/.bashrc | | once instead of _adding_ that line to .bashrc - even though | that 's exactly what you wrote... | cto_of_antifa wrote: | Wouldn't it add another ten Ms every time you opened a new | terminal session? | unionpivo wrote: | yeah its windows 95 simulator :) | _flux wrote: | The idea is to add the 'echo ..' to the .bashrc, not just | run the command once. | adwn wrote: | Ah, now I get it. Thanks! That's evil, indeed. | longwave wrote: | It appends another sleep each time you start a new shell, | so it subtly slows down over time. | VHRanger wrote: | wouldn't it do so exponentially? | | The first time it does it once, the second time the | statement is there twice so it does it twice, then 4, 8, | 16, etc. ? | Tesl wrote: | the third time the statement is there three times .. | usrbinbash wrote: | No, because; echo sleep 0.01 >> | ~/.bashrc | | adds this to .bashrc; sleep 0.01 | | It doesn't add itself, so the sleep tie grows linear by | 0.01sec each time a shell is opened. | djrogers wrote: | No, the entire statement isn't added each time, only the | sleep portion. | marginalia_nu wrote: | #define while if | toxik wrote: | Perfect balance of harmless and annoying. I would probably | never figure it out. Maybe include a cryptic warning so the | person eventually looks at it... #define | while if #warning "loop flow control substituted for | conditional" | layer8 wrote: | That fails if you have a do ... while. | toxik wrote: | May I then suggest... #define if while | wruza wrote: | I'd replace != with ==, so that issue at src.c:380 were | unlikely to be reproduced in a reduced case. | adwn wrote: | I disagree. You want TRUE to be _almost always_ 1. First, if | TRUE is almost always 0, the underlying problem will be | detected too quickly. Second, this will increase the chance | that any seemingly irrelevant change will cause the code to | work correctly, making any effort to isolate the bug a | frustrating exercise. | MadSudaca wrote: | If only we'd harness all this creative energy for good, | humanity would have transcended to a higher plane of | existence. | iso1631 wrote: | Better these pranks than using it for more malvertisments | usrbinbash wrote: | If we used the megagazillions we currently waste by | stuffing them into the military-industrial-complex for | useful things instead, we could easily end hunger, | provide medicine and clean water, give everyone acess to | moden technology and high quality education, fund tons of | useful research... | | ...and still have time and money aplenty left for some | laughs on the way. | saimiam wrote: | Maybe the higher place of existence is to find humor in | playing subtle pranks on our fellow man. I mean, most fun | gods were also pranksters. | vidarh wrote: | Maybe our world _is_ a prank. | BoxOfRain wrote: | >most fun gods were also pranksters. | | Eris is 100% the Greek god of putting this kind of thing | into your friends and colleague's code. I suspect she | also approves of `#define volatile` which could make for | a frustrating debugging session. | wruza wrote: | I thought I could mess that up in my mind, and indeed I | did. Sorry for the noise! | shaicoleman wrote: | How to quit vim in easy mode: Ctrl+o then :q! | elcapitan wrote: | Damn, that was the first time I didn't manage to exit vim :D | atemerev wrote: | Oh, so that's how I can finally use vim. | | (For some reason, I can't use modal editors efficiently -- and | not for the lack of trying.) | throw7 wrote: | That's "easy" mode?!@#$ | ryan-duve wrote: | This is amazing. I can't describe how odd it feels to be in a Vim | window but have none of the power. | | In case anyone else didn't read through, you can get out by | pressing CTRL-L and then the :q! command. | iso1631 wrote: | What a ridiculous mode. How on earth is that "easy"? It's harder | than nano! | Nextgrid wrote: | You may as well just start a war by aliasing it to _emacs_. | cryptonector wrote: | "Easy" mode is not easy for me. The whole point of vi (and so, | vim) is to be a _modal_ editor. | VoodooJuJu wrote: | And it's still hard to exit. | nicexe wrote: | The real prank is convincing me to try vim's easy mode. I once | again have to search the internet on how to exit vim or resort to | a new session just to kill vim. | tombh wrote: | I actually use Vim like this, in fact I wrote a plugin to go all | the way and make it a completely "normal" editor [1]. | | It's endlessly surprising to me that still to this day Vim is | most commonly considered through the lens of its keybindings. | It's sooo much more than that! It's a lightweight terminal editor | with one of the largest, if not the largest ecosystems of | pioneering extensions. It really shouldn't be weird that you'd | want to take advantage of all that without having to submit to | the religion of modal editing. | | 1. https://github.com/tombh/novim-mode | alpaca128 wrote: | That's why I can't ever get used to Vim plugins in other | editors. They assume the modal controls are what defines this | editor, while in truth that's just the obvious tip of the | iceberg and all other aspects are ignored. | | For me Vim means no clutter, distractions or "help" nobody | asked for, performance, a powerful yet simple system for | keybindings, and keyboard controls that cover 100% of the | functionality. | weaksauce wrote: | It's nice to have the power of vim on top of an already | powerful editor with nice defaults baked in and an easy | ecosystem of extensions that all play well with the gui | underpinnings of your os. I use neovim as a server and vscode | as the editor. basically anything in normal mode is passed | through unadulterated and you have a full neovim backend. | | it's pretty close to great. some edge cases that kinda annoy | you here and there but overall it's great. | newlisp wrote: | purists are going to be purist for sake of purism only. | tjoff wrote: | There are plenty of other reasons... | | Neovim in vscode is pretty great but it is still quite | hindered behind vscode. It is also easy to get in weird | mental states when the editor panes and other vscode | panes behave drastically different. | newlisp wrote: | That's true, but IMO is just a matter of accustoming | oneself to some new ways of doing things, as long as the | tradeoff is worth it for you. | metalliqaz wrote: | There used to be a plugin called Cream for Vim that did | something like this. I quite liked it for quick GUI edit tasks. | | Edit: looks like it maintenance stopped about 10 years ago | http://cream.sourceforge.net/ | asicsp wrote: | Nice. There's a lot I've learned in this thread :) | dandotway wrote: | I tried to make vim work like VSCodium (VSCode on telemetry | diet), but found it too hard and gave up. | | 1. How well do you handle the mouse in xterm? Vim actually has | fantastic mouse support in xterm (:set mouse=a), e.g. you can | use focus-follows-mouse scrollwheel to scroll individual split | content panes, drag click to resize the split dividers, etc. | (Although, last time I tried under WSL with the old-school win- | console, vim's focus-follow-mouse scrollwheel scrolling didn't | work there whereas emacs did work (with xterm-mouse-mode)). | | 2. Can you handle multiple cursors gracefully (vim-visual- | multi) with the mouse like VSCodium? Emacs doesn't have a non- | buggy multi-cursor mode and I gave up on achieving this with | Emacs. I just use VSCodium now, which means allocating over | 300MB of system RAM and gigabytes of dedicated graphics VRAM | for its 'HW accelerated' rendering that decelerates all other | HW graphics rendering on my machine. | Arch-TK wrote: | You can achieve a significant portion (if not more) of the | things that people use multiple cursors for in other editors | (or even in vim) with just plain vim regular expressions and | other features. Every time I've used multiple-cursors (either | in vim or other editors) I've found it just plain slower, | less precise and less powerful than plain vim commands. I | would recommend looking at the features vim has to offer and | learning them to see if maybe they can make up for the lack | of native multiple-cursors support. | dandotway wrote: | The Acme editor, used by C creator Dennis Ritchie, | converted me to the Rodent Religion. The mouse is the | fastest way to point to something on your computer screen, | especially a quality gaming mouse with mouse acceleration | disabled. Pointing at things on a computer screen and | clicking is a highly competitive activity involving | billions of dollars annually; pro gaming mouse designs have | evolved to be lightweight and extremely efficient at this | task. | | Pianists can rapidly move their hands to 100% accurately | strike keys more than a foot away at blink-of-the-eye speed | because they practice, and master mouse users can flick | their hand from keyboard to mouse to keyboard again at | blink-of-the-eye speed if they practice. Anchoring at the | keyboard is not the fastest way to edit text. | | There needs to be a text editing competition organized with | prize money. Then shall all the world see that mouse users | best the Rodentless in battle. | | If I need to double-backspace five different caret | positions visible on screen, I can Ctrl-click (or Alt- | click) to set multiple cursors faster than a master | vimmer's brain can devise a suitable ':[x,y]s/.../.../g' | command to accomplish the same thing. I know this because | I've used vim more than 20 years, and I also learned ed's | and sam's editing languages used by the original Unix gods. | The Unix gods switched to the Sam editor in the early 1980s | which is a bit like a mouse-oriented re-imagining of vi. | Then some switched to Plan 9's Acme in the 1990s, which | retains Sam's editing language. The Sam/Acme editing | language is not line-oriented like ed/vi/vim, e.g. | ':#3,#42' selects character 3 through 42 regardless of how | many newlines are between char 3 and 42 and does not select | to the beginning of the line before char 3 nor to the end | of the line after char 42. You can also do ':/re1/,/re2/' | and unlike vim this won't grab to the beginning of line | before /re1/, etc. Acme doesn't have multiple cursors | though and needs some TLC, it doesn't talk to an X server | efficiently and draw pixels efficiently because it's based | on Plan 9's drawterm. VSCodium does everything I need but | is ultra-bloated and I'd love lighter weight. | tombh wrote: | I don't use the mouse much, but yes, certainly in my | Alacritty/tmux terminal, the mouse selects, moves pane | boundaries etc. I've never actually tried a multi-cursor, I | have a feeling it might suffer the same fate as the auto | cursor positioning you get from snippet completion. But that | specific bug I've fixed locally | scelerat wrote: | > having to submit to the religion of modal editing | | ha but that is indeed why i'm here at all | Aperocky wrote: | As I look about in the temple of vim, I see dedicated | believers of modal editing, they are the good ones. | | I also see the heretics who are just here to take advantage | of INSERT mode, the heathens who come to insult our ancient | religion, and spies from church of emacs. I find their lack | of faith disturbing. | acomjean wrote: | Don't get me started on the Evil Mode emacs users, trying | to have it both ways. | | https://github.com/emacs-evil/evil | bastijn wrote: | Did somebody say Spacemacs? | | [0] https://www.spacemacs.org/ | weaksauce wrote: | spacemacs is great but doom is night and day faster. I | use doom for just magit now and the startup time is | almost negligible and the other affordances are still | there if you want them. | | spacemacs has a maintainer problem and some serious debt | that needs to be paid before it is a worthy contender in | my opinion. the whole you need to run on dev branch and | it's many (thousands?) of commits ahead of the main | branch and having many many stale/outdated/broken issues | is not tenable. | Yizahi wrote: | Look at you, hacker. A pathetic creature of meat and bone, | panting and sweating as you try to exit VIM. How can you | challenge a perfect, immortal VIIIIiiiIIMMMmmm... _static_ | qudat wrote: | > if not the largest ecosystems of pioneering extensions | | Agreed! And the neovim plug-in ecosystem is blowing up because | of its support for lua: https://neovimcraft.com | freeCandy wrote: | So that's how it feels when people say they can't exit vim. | vidarh wrote: | That's what ^z and kill -9 is for... (yes, I know, | unnecessarily brutal; consider it a passive aggressive reaction | - it _feels_ good) | fsflover wrote: | https://github.com/hakluke/how-to-exit-vim | iso1631 wrote: | ctrl-z does nothing (well it's mapped to undo in "easy" mode) | vidarh wrote: | Ah. Yikes. But randomly bashing a few keys with control | held before ^z still worked for me... Random key-bashing is | always a good bet if stuck in vim. | | (yes, I can usually get out of vim "properly" these days) | nostoc wrote: | Random key bashing in vim can have a lot of unforeseen | consequences for whatever poor file you had opened. | vidarh wrote: | Given I never _intentionally_ start vim, it 's generally | when I get thrown into editing some temporary file or | other on some system where I haven't configured an | editor. Not done any harm in the last 3 decades, so I | think the odds are decent. | fomine3 wrote: | If you open any file and just type "DZZ" (in capital), | you delete the first line of file and save and quit. | BoxOfRain wrote: | >yes, I know, unnecessarily brutal; consider it a passive | aggressive reaction - it feels good | | Throwing SIGKILL at something that's misbehaving is very | satisfying, especially if you have a habit of personifying | your computer a bit too much. | dylan604 wrote: | Sounds like a good time to link to | https://www.youtube.com/watch?v=0rG74rG_ubs | gnubison wrote: | Regular SIGINT will probably do the same thing (or SIGQUIT) | if that doesn't work. It's absurdly easy to create software | that misbehaves after a 'kill -9', because the only real use | for it is 60 seconds after starting the shutdown process for | the rare program that just won't exit. | vidarh wrote: | Yes, but not as satisfying... | andrewaylett wrote: | Hit the power switch. | | (In my youth, I definitely resorted to doing that more than | once) | YeGoblynQueenne wrote: | Try ed. _That_ is how it feels when people can 't exit vim :P | iso1631 wrote: | q or ctrl-z. Not rocket science, not like having to press | Control-L (clear terminal) before quitting. | Symmetry wrote: | Indeed: | | https://www.gnu.org/fun/jokes/ed-msg.en.html | | >Note the consistent user interface and error reportage. Ed | is generous enough to flag errors, yet prudent enough not to | overwhelm the novice with verbosity. | Shared404 wrote: | Also vanilla emacs. | | I just wanted to try out org >_< ! | mFixman wrote: | ? | eliasbagley wrote: | The mighty ed has spoken! | toxik wrote: | ? | okl wrote: | eat flaming death | Shared404 wrote: | ^C | amelius wrote: | I tried your suggestion ":P" | | It gave me: **warning** (netrw) using | Pexplore or <s-up> improperly; see help for netrw-starstar | avereveard wrote: | A quarter of support call when I was lab assistant for my uni | was students pressing ctrl+s in vim out of habit and getting | stuck in there. ___________________________________________________________________ (page generated 2022-01-07 23:00 UTC)