I need to write a report for a school computer lab project with screenshots of the steps I took. Instead of working on the homework I wrote a small script and macro for Vim which takes a screenshot and inserts the screenshot file name into the file you’re editing.
After taking the screenshot, it is displayed with feh so you can verify that you captured what you need.
You will need feh and imagemagick installed.
Save this script somewhere in your path as screenshot.sh and make it executable.
#!/bin/bash # Take a screenshot in the same directory as a given path # Waits 4 second before taking screenshot. # Displays it with feh after taking screenshot, # echoes file name afterwards # Used for adding screenshots to vim cd $(dirname $1) file=$(pwd)/$(date +%s).jpg if [[ $2 =~ ^[0-9]+$ ]]; then sleep $2 else sleep 4 fi import -window root $file feh $file 2>&1 echo $file
The VIM Macro
If you add this VIM macro to your .vimrc you can take a screenshot at any time by pressing @t.
let @t=':read! screenshot.sh %^M'
NOTE: The ^M is a control character. You won’t be able to copy and paste it. While in insert mode you need to press and hold ctrl-V, then press the letter m.
How it works:
:read! — runs an external command and puts the results into the current buffer
screenshot.sh % — Passes the current file (%) to screenshot.sh (the script above). The script above uses the path of the file you’re editing to determine where to save the screenshot, then prints the saved screenshot as output so that it ends up in your file.