Kamp is a tool to control Kakoune editor from the command line.
Requires Rust installed on your system.
Clone the repository and run cargo install --path .
With nix-env:
nix-env -iA kamp
With modern nix command:
nix profile install nixpkgs#kamp
Add following definition into your kakrc.
evaluate-commands %sh{
kamp init -a -e EDITOR='kamp edit'
}
The scripts need to be added to $PATH
in order to use them.
script | function |
---|---|
kamp-buffers |
pick buffers (fzf) |
kamp-files |
pick files (fzf) |
kamp-nnn |
pick files (nnn) |
kamp-filetypes |
set filetype (fzf) |
kamp-lines |
search lines in buffer (fzf) |
kamp-sessions |
attach session and pick a buffer |
kamp-grep |
grep interactively with fzf |
kamp-fifo |
pipe stdin into fifo buffer |
Following mappings use tmux-terminal-popup as popup implementation.
alias global popup tmux-terminal-popup
map global normal -docstring 'files' <c-f> ':connect popup kamp-files<ret>'
map global normal -docstring 'git ls-files' <c-l> ':connect popup kamp-files backend=git<ret>'
map global normal -docstring 'buffers' <c-b> ':connect popup kamp-buffers<ret>'
map global normal -docstring 'grep selection' <c-g> ':connect popup kamp-grep ''query=%val{selection}<a-!>''<ret>'
map global normal -docstring 'grep limit by filetype' <c-y> ':connect popup kamp-grep -t %opt{filetype}<ret>'
You may want to set the EDITOR
variable to kamp edit
so that connected programs work as intended:
export EDITOR='kamp edit'
Some useful aliases:
alias k='kamp edit'
alias kval='kamp get val'
alias kopt='kamp get opt'
alias kreg='kamp get reg'
alias kcd-pwd='cd "$(kamp get sh pwd)"'
alias kcd-buf='cd "$(dirname $(kamp get val buffile))"'
alias kft='kamp get opt -b \* -s filetype | sort | uniq' # list file types you're working on