-
-
Save gabydd/570f0dd5f71dda35241500c18f5d27e3 to your computer and use it in GitHub Desktop.
[keys.normal] | |
C-f = [":new", ":insert-output lf-pick", "split_selection_on_newline", "goto_file", "goto_last_modification", "goto_last_modified_file", ":buffer-close!", ":theme nord", ":theme default"] | |
# replace the default after theme with the theme you use | |
# open 1 with the open command (l and <left> to open) or more with (<space> to select) then quit | |
# all opened files will be opened in helix |
# touch ~/.local/bin/lf-pick | |
# chmod +x ~/.local/bin/lf-pick | |
function lfp(){ | |
local TEMP=$(mktemp) | |
lf -selection-path=$TEMP | |
echo >> $TEMP | |
while read -r line | |
do | |
echo "$line" | |
done < "$TEMP" | |
} | |
lfp |
That particular setup breaks Helix mouse scrolling, after coming back from lf
, due to some escape characters used in lf
To avoid that, we may run lf
inside a tmux
popup, It works only if Helix is already inside a tmux session, of course.
lfmux(){
local TEMP=$(mktemp)
tmux popup -h 100% -w 100% -E lf -selection-path=$TEMP
cat $TEMP
}
lfmux
It does open multiple files, without breaking anything.
I was inspired by @webdev23 tmux, but wanted zellij and yazi, so here it is for those interested.
This does not mess up the helix terminal. Note yazi
is not suitable from helix insert-output. Note zellij run
forks and you don't get the selections from the current interaction, so that is why this is broke into two commands.
However, I don't find it an issue to perform two key sequences in helix to open the files. They are also cached, so you don't have to pick agian if you want the same files.
config.toml
A-z = [":run-shell-command zellij run -fc -- yazi --chooser-file /tmp/yazi-chooser-file"]
A-Z = [":new", ":insert-output cat /tmp/yazi-chooser-file", "split_selection_on_newline", "goto_file", "goto_last_modification", "goto_last_modified_file", ":buffer-close!"]
lf -selection-path=/dev/stdout
lf -print-selection
works also. Additionally instead of theme switching :redraw
solves UI re-rendering.
[keys.normal]
C-f = [":new", ":insert-output lf -selection-path=/dev/stdout", "split_selection_on_newline", "goto_file", "goto_last_modification", "goto_last_modified_file", ":buffer-close!", ":redraw"]
Thank you for this.
The best version of this I've found so far (from scratching around in all the various answers), is:
C-f = [":new", ":insert-output lf -print-selection", "split_selection_on_newline", "goto_file", "goto_last_modification", "goto_last_modified_file", ":buffer-close!", ":redraw"]
With no lf-pick
script needed.
It almost works too! But you need to have modified a buffer to get it to open, and it doesn't open from the current location, which is a pain.
I think it's a testament to how much helix needs this functionality that we're all scrabbling around in here, trying desperately to make something work...
Hi this is great! however does every one knows how to open the lf-pick in the current buffer directory?
The
lf-pick
script is not necessary::insert-output lf -selection-path=/dev/stdout"