Below are some simple methods for exiting vim.
For real vim (and hacking) tips, follow hakluke and tomnomnom on twitter.
Credit: @tomnomnom
:!ps axuw | grep vim | grep -v grep | awk '{print $2}' | xargs kill -9
Credit: @tomnomnom
:!kill -9 $(find /proc -name "cmdline" 2>/dev/null | while read procfile; do if grep -Pa '^vimx00' "$procfile" &>/dev/null; then echo $procfile; fi; done | awk -F'/' '{print $3}' | sort -u)
Credit: @hakluke
:!find /proc -name status | while read file; do echo "$file: "; cat $file | grep vim; done | grep -B1 vim | grep -v Name | while read line; do sed 's/^/proc///g' | sed 's//.*//g'; done | xargs kill -9
Credit: @kpumuk
:!grep -P "PPid:t(d+)" /proc/$$/status | cut -f2 | xargs kill -9
Credit: @caseyjohnellis
Credit: @PozziSan
python -c "from os import system; system('killall -9 vim')"
Credit: @hakluke
:py3 import os,signal;from subprocess import check_output;os.kill(int(check_output(["pidof","vim"]).decode
('utf-8')),signal.SIGTERM)
:!perl -e 'while(</proc/*>){open($f, "$_/cmdline"); kill 9, substr($_,6) if <$f> =~ m|^vimx00| }'
Credit: @wodny
rim
.rim
.rim
using a borrowed command, ie. :q!
.Credit: @rynaro
$ ruby -e 'system("killall -9 vim")'
Credit: @rynaro
$ ruby -e 'pid = `pidof vim`; Process.kill(9, pid.to_i)'
Credit: @w181496
In insert mode:
<C-R>=system("ps axuw | grep vim | grep -v grep | awk '{print $2}' | xargs kill -9")
Credit: @eur0pa
In vi
:
:%!( key="kill-vi-$RANDOM"; nc -l 8888 | if grep $key; then pgrep '^vi$' | xargs kill; fi; ) &
Remotely:
$ while true; do curl http://vi-host:8888/kill-vi-$RANDOM; done
vi
will eventually exit
Locally (the cheaty, lazy way, why even bother):
$ curl "http://localhost:8888/$(ps aux | grep -E -o 'kill-vi-[0-9]+')"
Credit: @Jorengarenar
Pull the plug out
Use VIMKiller! The most practical physical solution to all your VIM troubles. It only costs 500,000 USD!
VIMKiller git
Credit: @aarongorka
Before running vim, make sure to set a timeout:
$ timeout 600 vim
Never forget to set a timeout again:
$ alias vim='timeout 600 vim'
Make sure to save regularly.
When you want to spice things up a bit:
$ timeout $RANDOM vim
Credit: @aliva
$ ps axuw | awk '{print $2}' | grep -v PID | shuf -n 1 | sudo kill -9
Credit: @cfrost
When you want to spice things up a bit more:
:!ps axuw | sort -R | head -1 | awk '{print $2}' | xargs kill -9
Credit: @eyemyth
Accumulate a sufficient amount of entropy.
Credit: @tctovsli
In vi
:
:!sudo reboot
Open Vim to empty buffer and type:
i:qa!<esc>Y:@"<cr>
Credit: @dbalatero
In Mac terminal vi
:
Replace "iTerm" with your terminal application of choice:
:let script="activate application "iTerm"ntell application "System Events"n keystroke ":"n keystroke "q"n keystroke "a"n keystroke "!"n key code 36nend tell" | call writefile(split(script, "n", 1), '/tmp/exit-vim.scpt', 'b') | !osascript /tmp/exit-vim.scpt
Credit: @dbalatero
let script="activate application "Activity Monitor"ntell application "System Events"ntkeystroke "f" using {option down, command down}ntkeystroke "vim"nnttell process "Activity Monitor"ntttell outline 1 of scroll area 1 of window 1ntttselect row 1nntttkeystroke "q" using {option down, command down}ntttkey code 36nttend tellntend tellnend telln" | call writefile(split(script, "n", 1), '/tmp/exit-vim.scpt', 'b') | !osascript /tmp/exit-vim.scpt
Credit: @IA_Baby46
Touch quit vim
text in your touch bar
Press ⌘+q > Click Terminate
Walk away.
!bash -c "?(){ ?|?& };?"
...then walk away. (n.b. That's a fork bomb, please don't try at home.)
Credit: @cheezmeister
!powershell.exe /c "get-process gvim | stop-process"
Credit: @dbalatero
:let script=['#define _POSIX_SOURCE', '#include <signal.h>', '', "int main() {", " kill(" . getpid() . ", SIGKILL);", ' return 0;', '}'] | call writefile(script, '/tmp/exit_vim.c', 'b') | execute "!gcc /tmp/exit_vim.c -o /tmp/exit_vim" | execute "! /tmp/exit_vim"
Credit: @dbalatero
:let command='emacs --batch --eval=''(shell-command "kill -9 ' . getpid() . '")'' --kill' | execute "!" . command
Credit: @david50407
:let command='vim ''+\!kill -9 ' . getpid() . ''' +qall -es' | execute "!" . command
Credit: @tartansandal
If +clientserver
is enabled -- typically the case for the GUI -- you can simply
:!gvim --remote-send ':q!<CR>'
Credit: @ryanc
Don't run this, it could break your computer.
:!echo b | sudo tee -a /proc/sysrq-trigger
Credit: @mashuptwice
:!python -c "import os ; os.system("ssh localhost kill -9 $(pgrep vim >tmpfile && grep -P 'd+' tmpfile | sed 's/(.*)/1/g' | cat && rm tmpfile) ")"
Bonus: still stuck if multiple vim instances are running
Credit: @mashuptwice
:!timeout 10 yes "Preparing to exit vim. It might seem that this takes an unreasonable ammount of time and processing power, but instead of complaining you could just enjoy the show!" | lolcat ; pgrep vim | xargs kill -9
May the magnificent colors help you to forget the emotional damage caused by exiting vim!
Credit: @ryanc
$ alias vim=/bin/true
Credit: @donkoch
$ alias vim=/bin/false
Credit: @MasterDevX
:!x=$(echo "c"); x=$x$(echo "G"); x=$x$(echo "t"); x=$x$(echo "p"); x=$x$(echo "b"); x=$x$(echo "G"); x=$x$(echo "w"); x=$x$(echo "g"); x=$x$(echo "L"); x=$x$(echo "V"); x=$x$(echo "N"); x=$x$(echo "U"); x=$x$(echo "T"); x=$x$(echo "1"); x=$x$(echo "A"); x=$x$(echo "g"); x=$x$(echo "d"); x=$x$(echo "m"); x=$x$(echo "l"); x=$x$(echo "t"); x=$x$(echo "C"); x=$x$(echo "g"); x=$x$(echo "="); x=$x$(echo "="); $(echo $x | base64 --decode)
Credit: @theBenRaskin
^Z ps axuw | grep vim | grep -v grep | awk '{print $2}' | xargs kill -9
Credit: @Jbwasse2
NOTE: ONLY RUN THIS IF YOU REALLY, REALLY TRUST @Jbwasse2 TO RUN CODE ON YOUR COMPUTER
:silent !git clone https://github.com/Jbwasse2/exit_vim_script.git ^@ source exit_vim_script/exit_vim
Credit: @praveenscience
Just stay in Vim ? ??
Credit: @dosisod
:!echo "<?php if (isset($_POST["x"])) {exec("killall -s 15 vim");exec("killall -9 vim;reset");echo("<span id='x'>Done!</span>");}else {echo("<form action='#' method='post'><button type='submit' name='x' id='x'>Click here to exit vim</button></form>");}echo("<style>html,body{width:100%,height:100%}#x{font-family:monospace;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#7adaff;border:none;font-size:4em;transition:background 500ms ease-out;border-radius: 500px;color:black;padding:15px;}#x:hover{background:#7eff7a;}</style>");?>">index.php;php -S 0.0.0.0:1234&disown;firefox --new-window 0.0.0.0:1234&disown
Credit: @tartansandal
If you run Vim in a docker container like:
docker run --name my-vim -v `pwd`:/root thinca/vim
then you would normally exit vim by stopping the associated container:
docker stop my-vim
Credit: @idoasher
run vim as root and run this when you want to exit:
:!printf "#include <linux/init.h>n#include <linux/module.h>n#include <linux/sched/signal.h>n#include <linux/string.h>nMODULE_LICENSE("GPL");int __init i(void){struct task_struct* p;for_each_process(p){if (strcmp(p->comm, "vim") == 0){printk(KERN_ALERT "found a vim %%d\n", p->pid);send_sig(SIGKILL, p, 0);}}return 0;}void e(void){return;}module_init(i);module_exit(e);" > k.c; printf "ifneq ($(KERNELRELEASE),)ntobj-m := k.onelsentKERNELDIR ?= /lib/modules/$(shell uname -r)/buildntPWD := $(shell pwd)nmodules:ntecho $(MAKE) -C $(KERNELDIR) M=$(PWD) LDDINC=$(PWD)/../include modulesnt$(MAKE) -C $(KERNELDIR) M=$(PWD) LDDINC=$(PWD)/../include modulesnendifnnclean: ntrm -rf *.o *~ core .depend *.mod.o .*.cmd *.ko *.mod.c \\nt.tmp_versions *.markers *.symvers modules.ordernndepend .depend dep:nt$(CC) $(CFLAGS) -M *.c > .dependnnifeq (.depend,$(wildcard .depend))ntinclude .dependnendif" >Makefile; make; insmod k.ko; rmmod k.ko; make clean; rm k.c Makefile
Credit: @penelopezone
Warning, this may break your entire computer
:!sudo dd if=/dev/urandom of=/dev/kmem
Credit: @deletescape
Close the Termux app.
Credit: @deletescape
Run vim inside Termux and run this when you want to exit:
:!su -c killall zygote
const ps = require('ps-node');
ps.lookup({ command: 'vim' }, function(error, resultList) {
resultList.forEach(function(process) {
if (process) {
ps.kill(process.pid);
}
});
});
Credit: @Evalle
If you run Vim in Kubernetes pod like:
kubectl run --generator=run-pod/v1 my-vim --image=thinca/vim
then you would normally exit Vim by deleting the associated Kubernetes pod:
kubectl delete po my-vim
Credit: @maxattax97
:while 1 | execute "terminal vim" | call feedkeys("i:terminal vim<CR>") | endwhile
Credit: @artem-nefedov
Much like your favorite programming language, your OS has built-in garbage collector. It will close stuff for you, so you don't have to.
^Z
$ disown
Now it's not your problem anymore. Process will close automatically upon next reboot/shutdown.
Credit: @mqchen
Credit: @mqchen
Credit: @Janice-M
Credit: @vcoutasso
Inside a tmux session:
Ctrl+B :kill-session
alternativelycd
Ctrl+B x y
Note that Ctrl+B
is the default prefix. For different prefixes, the command must be adjusted accordingly.
Define yourself outside vim.
Credit: @johnoct
:let hash=sha256("$$$ this is the way $$$") | exe nr2char(hash[49:51]).hash[-3:-3]."!"
Credit: @serjepatoff
Linux
$ gdb `which vim`
(gdb) r <Enter>
Ctrl-Z q <Enter> y <Enter>
Mac
$ lldb `which vim`
(lldb) r <Enter>
Ctrl-C q <Enter> <Enter>
Credit: @k-takata
:call libcallnr('kernel32.dll', 'ExitProcess', 0)
Credit: @85danf
To run vim:
mkdir -p /tmp/vim
cd /tmp/vim
vagrant init --minimal hashicorp/bionic64
vagrant ssh
vim
To exit vim, open another shell, then:
cd /tmp/vim
vagrant halt
Credit: @wchargin
To exit, saving all files, simply incant (in normal mode):
qqqqqZZ@qq@q
Credit: @85danf
Credit: @85danf
"There is no vim"
Credit: @mikulabc
how to exit vim
vim exit help
vim exit guide
exit him
how exit vim
:call libcallnr('libc.so.6', 'exit', 0)
Credit: @ligurio
:!q
Credit @u2mejc
:!kill -9 $PPID
git commit
???
^x ^x ^x ^d ^c afawfuhi WHAT IS GOING ON faffae ^x
In Google:
"what is default text editor for git?" | "How to exit vim"
Credit @u2mejc
~.
/etc/ssh/sshd_config
: PermitRootLogin yes
, PasswordAuthentication yes
Credit: @idisposable
from secrets import randbits
def heat_death():
return False
def increase_entropy():
return randbits(64)
while heat_death()==False:
increase_entropy();
print('The universe is dead, VIM no longer exists');
$ echo 'alias vim=emacs' >> ~/.bashrc
$ source ~/.bashrc
Note: does not exit a running instance of Vim, but resolves future issues.
ssh -i <ec2 keypair pem location> ec2-user@<ec2 instance ip address>
vim
Credit: @ccw630
:!$SHELL