aboutsummaryrefslogtreecommitdiff
path: root/files/.config/tmux/scripts/search
blob: 027f789cd8b0c181ef91be931997ad1076fc9e9e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/bash
# From https://github.com/toupeira/dotfiles/blob/main/config/tmux/scripts/search

set -euo pipefail

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_interesting() {
  urls='(https?://|git@|git://|ssh://|ftp://|file:///)[[:alnum:]?=%/_.:,;~@!#$&()*+-]*'
  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 "$@"