summaryrefslogtreecommitdiff
path: root/dot-config/fish/conf.d/binds.conf
diff options
context:
space:
mode:
Diffstat (limited to 'dot-config/fish/conf.d/binds.conf')
-rw-r--r--dot-config/fish/conf.d/binds.conf50
1 files changed, 50 insertions, 0 deletions
diff --git a/dot-config/fish/conf.d/binds.conf b/dot-config/fish/conf.d/binds.conf
new file mode 100644
index 00000000..7b6e5e6a
--- /dev/null
+++ b/dot-config/fish/conf.d/binds.conf
@@ -0,0 +1,50 @@
+function toggle-sudo
+ set buf (commandline)
+
+ if test -z "$buf"
+ set last (history | head -n1)
+ if test -z "$last"
+ commandline -r "sudo "
+ return
+ end
+ set buf $last
+ end
+
+ if string match -rq '^\s*sudo(\s+|$)' -- $buf
+ set new (string replace -r '^\s*sudo\s*' '' -- $buf)
+ if test -z "$new"
+ commandline -r ""
+ return
+ end
+ commandline -r $new
+ else
+ commandline -r "sudo $buf"
+ end
+end
+function fish_user_key_bindings
+ for m in default insert
+ bind -M $m ctrl-f accept-autosuggestion
+ bind -M $m ctrl-backspace backward-kill-word
+ end
+
+ for m in default insert normal
+ bind -M $m alt-left 'commandline -f cancel; cd -; commandline -f repaint'
+ bind -M $m alt-up 'commandline -f cancel; cd ..; commandline -f repaint'
+ bind -M $m ctrl-e toggle-sudo
+ bind -M $m ctrl-r history-pager
+ end
+
+ bind -M normal U redo
+
+ for m in default insert normal replace replace_one
+ bind --preset --erase -M $m ctrl-h
+ bind -M $m ctrl-h backward-char
+ bind --preset --erase -M $m ctrl-j
+ bind -M $m ctrl-j down-or-search
+ bind --preset --erase -M $m ctrl-k
+ bind -M $m ctrl-k up-or-search
+ # clear overrode
+ bind --preset --erase -M $m ctrl-l
+ bind -M $m ctrl-l forward-char
+ end
+end