Skip to content

Instantly share code, notes, and snippets.

@igor-ramazanov
Created March 31, 2025 00:07
Show Gist options
  • Select an option

  • Save igor-ramazanov/093b1368b1349baef72b4f5133eb5746 to your computer and use it in GitHub Desktop.

Select an option

Save igor-ramazanov/093b1368b1349baef72b4f5133eb5746 to your computer and use it in GitHub Desktop.
provide-module -override files %{
declare-user-mode files
# Search by filename
define-command -hidden tmux-pick-file %{ nop %sh{
program="
let picked = fd --type=file | fzf --preview 'bat --color=always --plain --line-range=:50 {}' --preview-window wrap,noinfo;
$'eval -client $kak_client edit (\$picked)' | kak -p $kak_session;
"
wezterm cli spawn --cwd $kak_client_env_PWD -- \
nu --login --interactive --commands "$program" &>/dev/null
}}
map global files f ":tmux-pick-file<ret>" -docstring " By name"
# Search by name only git changed
define-command -hidden tmux-pick-git-file %{ nop %sh{
program="
let picked = git diff HEAD --name-only --no-color
| fzf --preview 'bat --color=always --plain --line-range=:50 {}' --preview-window wrap,noinfo;
$'eval -client $kak_client edit (\$picked)' | kak -p $kak_session;
"
wezterm cli spawn --cwd $kak_client_env_PWD -- \
nu --login --interactive --commands "$program" &>/dev/null
}}
map global files g ":tmux-pick-git-file<ret>" -docstring " Modified"
# Search by content
define-command -hidden tmux-find-file %{ nop %sh{
program="
let picked = rg --line-number --color never '.*'
| fzf
| parse '{file}:{line}:{rest}'
| get 0;
$'eval -client $kak_client edit (\$picked.file) (\$picked.line)' | kak -p $kak_session;
"
wezterm cli spawn --cwd $kak_client_env_PWD -- \
nu --login --interactive --commands "$program" &>/dev/null
}}
map global files F ":tmux-find-file<ret>" -docstring " By content"
# Search by name in local dir
define-command -hidden tmux-pick-file-local %{ nop %sh{
dir="$(echo $kak_buffile | rg --replace '$1' --only-matching "$PWD/(.*)/.*")"
program="
let picked = fd --type=file . $dir
| fzf --preview 'bat --color=always --plain --line-range=:50 {}' --preview-window wrap,noinfo;
$'eval -client $kak_client edit (\$picked)' | kak -p $kak_session;
"
wezterm cli spawn --cwd $kak_client_env_PWD -- \
nu --login --interactive --commands "$program" &>/dev/null
}}
map global files l ":tmux-pick-file-local<ret>" -docstring " In same dir"
map global user f ":enter-user-mode files<ret>" -docstring "󰈢 Files"
define-command toggle-file-tree %{nop %sh{
chooser="$(mktemp /tmp/kakoune-yazi.XXXXXX)"
program="
yazi --chooser-file $chooser $kak_buffile;
let picked = cat $chooser;
rm -rf $chooser;
if (\$picked | str trim) != '' {
$'eval -client $kak_client edit (\$picked)' | kak -p $kak_session
}
"
wezterm cli spawn --cwd $kak_client_env_PWD -- \
nu --login --interactive --commands "$program" &>/dev/null
}}
map global user t ":toggle-file-tree<ret>" -docstring "󰙅 Project view"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment