mirror of
https://github.com/Llewellynvdm/fzf.git
synced 2024-11-25 06:07:42 +00:00
Implement ALT-B / ALT-F
This commit is contained in:
parent
419bc17c0c
commit
93dafff424
@ -111,6 +111,7 @@ The following readline key bindings should also work as expected.
|
|||||||
- CTRL-A / CTRL-E
|
- CTRL-A / CTRL-E
|
||||||
- CTRL-B / CTRL-F
|
- CTRL-B / CTRL-F
|
||||||
- CTRL-W / CTRL-U
|
- CTRL-W / CTRL-U
|
||||||
|
- ALT-B / ALT-F
|
||||||
|
|
||||||
If you enable multi-select mode with `-m` option, you can select multiple items
|
If you enable multi-select mode with `-m` option, you can select multiple items
|
||||||
with TAB or Shift-TAB key.
|
with TAB or Shift-TAB key.
|
||||||
|
43
fzf
43
fzf
@ -10,7 +10,7 @@
|
|||||||
# URL: https://github.com/junegunn/fzf
|
# URL: https://github.com/junegunn/fzf
|
||||||
# Author: Junegunn Choi
|
# Author: Junegunn Choi
|
||||||
# License: MIT
|
# License: MIT
|
||||||
# Last update: November 16, 2013
|
# Last update: November 17, 2013
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013 Junegunn Choi
|
# Copyright (c) 2013 Junegunn Choi
|
||||||
#
|
#
|
||||||
@ -631,6 +631,9 @@ class FZF
|
|||||||
tty = IO.open(IO.sysopen('/dev/tty'), 'r')
|
tty = IO.open(IO.sysopen('/dev/tty'), 'r')
|
||||||
input = ''
|
input = ''
|
||||||
cursor = 0
|
cursor = 0
|
||||||
|
backword = proc {
|
||||||
|
cursor = (input[0, cursor].rindex(/\s\S/) || -1) + 1
|
||||||
|
}
|
||||||
actions = {
|
actions = {
|
||||||
:nop => proc { nil },
|
:nop => proc { nil },
|
||||||
ctrl(:c) => proc { exit 1 },
|
ctrl(:c) => proc { exit 1 },
|
||||||
@ -645,9 +648,9 @@ class FZF
|
|||||||
ctrl(:j) => proc { @vcursor.set { |v| @vcursors << v; v - 1 }; update_list false },
|
ctrl(:j) => proc { @vcursor.set { |v| @vcursors << v; v - 1 }; update_list false },
|
||||||
ctrl(:k) => proc { @vcursor.set { |v| @vcursors << v; v + 1 }; update_list false },
|
ctrl(:k) => proc { @vcursor.set { |v| @vcursors << v; v + 1 }; update_list false },
|
||||||
ctrl(:w) => proc {
|
ctrl(:w) => proc {
|
||||||
ridx = (input[0...cursor - 1].rindex(/\S\s/) || -2) + 2
|
pcursor = cursor
|
||||||
input = input[0...ridx] + input[cursor..-1]
|
backword.call
|
||||||
cursor = ridx
|
input = input[0...cursor] + input[pcursor..-1]
|
||||||
},
|
},
|
||||||
127 => proc { input[cursor -= 1] = '' if cursor > 0 },
|
127 => proc { input[cursor -= 1] = '' if cursor > 0 },
|
||||||
9 => proc { |o|
|
9 => proc { |o|
|
||||||
@ -666,6 +669,11 @@ class FZF
|
|||||||
},
|
},
|
||||||
:left => proc { cursor = [0, cursor - 1].max; nil },
|
:left => proc { cursor = [0, cursor - 1].max; nil },
|
||||||
:right => proc { cursor = [input.length, cursor + 1].min; nil },
|
:right => proc { cursor = [input.length, cursor + 1].min; nil },
|
||||||
|
:alt_b => proc { backword.call; nil },
|
||||||
|
:alt_f => proc {
|
||||||
|
cursor += (input[cursor..-1].index(/(\S\s)|(.$)/) || -1) + 1
|
||||||
|
nil
|
||||||
|
},
|
||||||
}
|
}
|
||||||
actions[ctrl(:b)] = actions[:left]
|
actions[ctrl(:b)] = actions[:left]
|
||||||
actions[ctrl(:f)] = actions[:right]
|
actions[ctrl(:f)] = actions[:right]
|
||||||
@ -679,19 +687,24 @@ class FZF
|
|||||||
render { print_input }
|
render { print_input }
|
||||||
|
|
||||||
ord = tty.getc.ord
|
ord = tty.getc.ord
|
||||||
if ord == 27
|
ord =
|
||||||
case ord = tty.getc.ord
|
case ord = tty.getc.ord
|
||||||
when 91
|
when 91
|
||||||
ord = case tty.getc.ord
|
case tty.getc.ord
|
||||||
when 68 then :left
|
when 68 then :left
|
||||||
when 67 then :right
|
when 67 then :right
|
||||||
when 66 then ctrl(:j)
|
when 66 then ctrl(:j)
|
||||||
when 65 then ctrl(:k)
|
when 65 then ctrl(:k)
|
||||||
when 90 then :stab
|
when 90 then :stab
|
||||||
else :nop
|
else :nop
|
||||||
end
|
end
|
||||||
end
|
when 'b'.ord
|
||||||
end
|
:alt_b
|
||||||
|
when 'f'.ord
|
||||||
|
:alt_f
|
||||||
|
else
|
||||||
|
ord
|
||||||
|
end if ord == 27
|
||||||
|
|
||||||
upd = actions.fetch(ord, proc { |ord|
|
upd = actions.fetch(ord, proc { |ord|
|
||||||
char = [ord].pack('U*')
|
char = [ord].pack('U*')
|
||||||
|
Loading…
Reference in New Issue
Block a user