tmux: Move textobj simulation into own textobjs.sh
This commit is contained in:
@@ -159,50 +159,7 @@ bind -T copy-mode-vi I send -X cancel
|
||||
bind -T copy-mode-vi a send -X cancel
|
||||
|
||||
# Rudimentary text object simulation
|
||||
# TODO: Breaks when on the beginning or end of the object
|
||||
bind -T copy-mode-vi i \
|
||||
if -F "#{selection_present}" {
|
||||
command-prompt -k -p (operator-pending) {
|
||||
if -F "#{==:%1,w}" {
|
||||
# send "boe"
|
||||
send -X previous-word
|
||||
send -X other-end
|
||||
send -X next-word-end
|
||||
}{ if -F "#{==:%1,W}" {
|
||||
# send "BoE"
|
||||
send -X previous-space
|
||||
send -X other-end
|
||||
send -X next-space-end
|
||||
}{ if -F "#{==:%1,p}" {
|
||||
# send "{j0o}k$"
|
||||
send -X previous-paragraph
|
||||
# don't move down if we're at the very first
|
||||
# paragraph
|
||||
if -F "#{||:#{e|<:#{scroll_position},#{history_size}},#{e|>:#{copy_cursor_y},#{scroll_region_upper}}}" {
|
||||
send -X cursor-down
|
||||
}
|
||||
send -X start-of-line
|
||||
send -X other-end
|
||||
send -X next-paragraph
|
||||
# don't move up if we're at the very last
|
||||
# paragraph
|
||||
if -F "#{||:#{e|>:#{scroll_position},0},#{e|<:#{copy_cursor_y},#{scroll_region_lower}}}" {
|
||||
send -X cursor-up
|
||||
}
|
||||
send -X end-of-line
|
||||
}{ if -F '#{==:%1,"}' {
|
||||
send -X jump-to-backward '"'
|
||||
send -X other-end
|
||||
send -X jump-to-forward '"'
|
||||
}{ if -F "#{==:%1,'}" {
|
||||
send -X jump-to-backward "'"
|
||||
send -X other-end
|
||||
send -X jump-to-forward "'"
|
||||
}}}}}
|
||||
}
|
||||
} {
|
||||
send -X cancel
|
||||
}
|
||||
bind -T copy-mode-vi i run-shell '${XDG_CONFIG_HOME:-$HOME/.config}/tmux/textobjs.sh'
|
||||
|
||||
# Simulate vim's C-e & C-y (Keep cursor position while scrolling). As tmux
|
||||
# cannot scroll past the first and last history line, both bindings stop
|
||||
|
||||
Reference in New Issue
Block a user