#!/bin/bash # From https://github.com/toupeira/dotfiles/blob/main/config/tmux/scripts/search set -euo pipefail urls='(https?://|git@|git://|ssh://|ftp://|file:///)[[:alnum:]?=%/_.:,;~@!#$&()*+-]*' search() { tmux send-keys -X search-backward "$1" } search_string() { tmux send-keys "?" } search_path() { # pattern from copycat https://github.com/tmux-plugins/tmux-copycat/blob/d7f7e6c1de0bc0d6915f4beea5be6a8a42045c09/copycat.tmux#L21 # "(^|^\.|[[:space:]]|[[:space:]]\.|[[:space:]]\.\.|^\.\.)[[:alnum:]~_-]*/[][[:alnum:]_.#$%&+=/@-]*" path='[-_.[:alnum:]]' search "~?(/$path+|$path+/|$path*\.$path+)+$path*(:[0-9]+)*" } search_url() { search "$urls" } search_interesting() { emails='[-_\.[:alnum:]]+@[-_\.[:alnum:]]+' hashes='\b(([0-9a-f]{7,40}|[[:alnum:]]{52}|[0-9a-f]{64})(\.{2,3})?)+\b' ips='[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}' search "($urls|$emails|$hashes|$ips)" } main() { tmux copy-mode "search_${1:-string}" } main "$@"