From 048ee6badd6ab84c0e0814fdc2f703bce36e4ab1 Mon Sep 17 00:00:00 2001 From: Martin Bauer Date: Mon, 6 Jun 2022 22:29:16 +0200 Subject: [PATCH] fzf and broot --- README.md | 22 +++ buildenv.sh | 37 +++- config_in/.vimrc | 65 +++++++ config_in/activate.sh | 5 + config_in/broot/conf.hjson | 359 +++++++++++++++++++++++++++++++++++++ config_in/fish/config.fish | 3 +- config_in/nvim/init.vim | 7 +- 7 files changed, 493 insertions(+), 5 deletions(-) create mode 100644 README.md create mode 100644 config_in/.vimrc create mode 100644 config_in/broot/conf.hjson diff --git a/README.md b/README.md new file mode 100644 index 0000000..1ad10d8 --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +MBs Environment +=============== + + + +Contents +-------- + +- fish shell with ohmyfish plugin manager and bobthefish theme +- neovim +- bat + + + + + + +TODO: + - tree + - egrep + - ultimate plumer + diff --git a/buildenv.sh b/buildenv.sh index ad152f0..8531360 100755 --- a/buildenv.sh +++ b/buildenv.sh @@ -1,4 +1,4 @@ -#/bin/bash +#!/bin/bash # Folder definitions BASE=$(pwd) @@ -133,6 +133,41 @@ mkdir -p tmux/plugins git clone https://github.com/tmux-plugins/tpm tmux/plugins/tpm &> /dev/null ./tmux/plugins/tpm/bin/install_plugins &> /dev/null +# -------------------------------------------- tmux ------------------------------------------------------------ + +printf "${Blue}--> fzf${Color_Off}\n" + +cd ${MB_ENV_BASE}/bin +curl -sL https://github.com/junegunn/fzf/releases/download/0.30.0/fzf-0.30.0-linux_amd64.tar.gz | tar xz +curl -sL https://raw.githubusercontent.com/junegunn/fzf/master/bin/fzf-tmux > fzf-tmux +curl -sL https://raw.githubusercontent.com/junegunn/fzf/master/shell/key-bindings.fish > ${XDG_CONFIG_HOME}/fish/functions/fzf_key_bindings.fish +chmod u+x fzf-tmux + + + +# -------------------------------------------- fd ------------------------------------------------------------ + +printf "${Blue}--> fd${Color_Off}\n" +cd ${INSTALL_TMP_DIR} +curl -sL https://github.com/sharkdp/fd/releases/download/v8.4.0/fd-v8.4.0-i686-unknown-linux-gnu.tar.gz | tar xz +cd fd-* +cp autocomplete/fd.fish $XDG_CONFIG_HOME/fish/completions/fd.fish +cp fd* ${MB_ENV_BASE}/bin + + + +# -------------------------------------------- broot ------------------------------------------------------------ + +printf "${Blue}--> broot${Color_Off}\n" +cd ${INSTALL_TMP_DIR} +mkdir broot && cd broot +curl -sL https://github.com/Canop/broot/releases/download/v1.13.1/broot_1.13.1.zip > broot.zip +unzip -q broot.zip +cp ./x86_64-unknown-linux-musl/broot ${MB_ENV_BASE}/bin/ +cp completion/broot.fish $XDG_CONFIG_HOME/fish/completions/broot.fish +${MB_ENV_BASE}/bin/broot --print-shell-function fish > $XDG_CONFIG_HOME/fish/functions/br.fish +cp -r ${CONFIG_IN}/broot $XDG_CONFIG_HOME + # ------------------------------------------- configs ----------------------------------------------------------- cp ${CONFIG_IN}/activate.sh $MB_ENV_BASE # activation script diff --git a/config_in/.vimrc b/config_in/.vimrc new file mode 100644 index 0000000..59885cd --- /dev/null +++ b/config_in/.vimrc @@ -0,0 +1,65 @@ + + +set runtimepath=~/.mbenv/config/vim + + +"---------------------------------------------------------------------------------- +"--------------- DEBIAN CONFIG ------------------------------------------------ +"---------------------------------------------------------------------------------- + +" Normally we use vim-extensions. If you want true vi-compatibility +" remove change the following statements +set nocompatible " Use Vim defaults instead of 100% vi compatibility +set backspace=indent,eol,start " more powerful backspacing + +" Now we set some defaults for the editor +set history=50 " keep 50 lines of command line history +set ruler " show the cursor position all the time + +" modelines have historically been a source of security/resource +" vulnerabilities -- disable by default, even when 'nocompatible' is set +set nomodeline + +" Suffixes that get lower priority when doing tab completion for filenames. +" These are files we are not likely to want to edit or read. +set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc + +" We know xterm-debian is a color terminal +if &term =~ "xterm-debian" || &term =~ "xterm-xfree86" + set t_Co=16 + set t_Sf=^[[3%dm + set t_Sb=^[[4%dm +endif + + +"---------------------------------------------------------------------------------- +"---------------------------------------------------------------------------------- +"---------------------------------------------------------------------------------- + +set showcmd " Show (partial) command in status line. +set showmatch " Show matching brackets. +set ignorecase " Do case insensitive matching +set smartcase " Do smart case matching +set incsearch " Incremental search +set autowrite " Automatically save before commands like :next and :make +set hidden " Hide buffers when they are abandoned + + +"---------------------------------------------------------------------------------- +"---------------------------------------------------------------------------------- +"---------------------------------------------------------------------------------- + +inoremap jk +syntax on +set background=dark + +"---------------------------------------------------------------------------------- +"---------------------------------------------------------------------------------- +"---------------------------------------------------------------------------------- + +call plug#begin() + +" syntax highlighting for many languages +Plug 'sheerun/vim-polyglot' + +call plug#end() \ No newline at end of file diff --git a/config_in/activate.sh b/config_in/activate.sh index 3376b9b..10fd53c 100755 --- a/config_in/activate.sh +++ b/config_in/activate.sh @@ -9,5 +9,10 @@ export TERM=xterm-256color export TERMINFO=${MB_ENV_BASE}/share/terminfo export SHELL=${MB_ENV_BASE}/bin/fish +export FZF_CTRL_T_COMMAND="fd --type f --color=never --hidden" +export FZF_CTRL_T_OPTS="--preview 'bat --color=always --line-range :50 {}'" +export FZF_ALT_C_COMMAND="fd --type d . --color=never --hidden" +#export FZF_ALT_C_OPTS="--preview 'tree -C {} | head -50'" + ${MB_ENV_BASE}/bin/fish.sh diff --git a/config_in/broot/conf.hjson b/config_in/broot/conf.hjson new file mode 100644 index 0000000..dc5bb6f --- /dev/null +++ b/config_in/broot/conf.hjson @@ -0,0 +1,359 @@ +############################################################### +# This configuration file lets you +# - define new commands +# - change the shortcut or triggering keys of built-in verbs +# - change the colors +# - set default values for flags +# - set special behaviors on specific paths +# - and more... +# +# Configuration documentation is available at +# https://dystroy.org/broot +# +# This file's format is Hjson ( https://hjson.github.io/ ). Some +# properties are commented out. To enable them, remove the `#`. +# +############################################################### +{ + + ############################################################### + # Default flags + # You can set up flags you want broot to start with by + # default, for example `default_flags="ihp"` if you usually want + # to see hidden and gitignored files and the permissions (then + # if you don't want the hidden files you can launch `br -H`) + # A popular flag is the `g` one which displays git related info. + # + # default_flags: + + ############################################################### + # Date/Time format + # If you want to change the format for date/time, uncomment the + # following line and change it according to + # https://docs.rs/chrono/0.4.11/chrono/format/strftime/index.html + # + # date_time_format: %Y/%m/%d %R + + ############################################################### + # uncomment to activate modal mode + # + # (you really should read https://dystroy.org/broot/modal/ + # before as it may not suit everybody even among vim users) + # + # modal: true + + ############################################################### + # Whether to mark the selected line with a triangle + # + show_selection_mark: true + + ############################################################### + # Column order + # cols_order, if specified, must be a permutation of the following + # array. You should keep the name at the end as it has a variable + # length. + # + # cols_order: [ + # mark + # git + # size + # permission + # date + # count + # branch + # name + # ] + + ############################################################### + # True Colors + # If this parameter isn't set, broot tries to automatically + # determine whether true colors (24 bits) are available. + # As this process is unreliable, you may uncomment this setting + # and set it to false or true if you notice the colors in + # previewed images are too off. + # + # true_colors: false + + ############################################################### + # Icons + # If you want to display icons in broot, uncomment this line + # (see https://dystroy.org/broot/icons for installation and + # troubleshooting) + # + # icon_theme: vscode + + ############################################################### + # Special paths + # If some paths must be handled specially, uncomment (and change + # this section as per the examples) + # + # special_paths: { + # "/media/slow-backup-disk" : no-enter + # "/home/dys/useless" : hide + # "/home/dys/my-link-I-want-to-explore" : enter + # } + + ############################################################### + # Quit on last cancel + # You can usually cancel the last state change on escape. + # If you want the escape key to quit broot when there's nothing + # to cancel (for example when you just opened broot), uncomment + # this parameter + # + # quit_on_last_cancel: true + + ############################################################### + # Search modes + # + # broot allows many search modes. + # A search mode is defined by + # - the way to search: 'fuzzy', 'exact', 'regex', or 'tokens'. + # - where to search: file 'name', 'path', or file 'content' + # A search pattern may for example be "fuzzy path" (default), + # "regex content" or "exact path". + # + # The search mode is selected from its prefix. For example, if + # you type "abc", the default mode is "fuzzy path". If you type + # "/abc", the mode is "regex path". If you type "rn/abc", the mode + # is "regex name". + # + # This mapping may be modified. You may want to dedicate the + # empty prefix (the one which doesn't need a '/') to the + # search mode you use most often. The example below makes it + # easy to search on name rather than on the subpath. + # + # More information on + # https://dystroy.org/broot/input/#the-filtering-pattern + # + # search_modes: { + # : fuzzy name + # /: regex name + # } + + ############################################################### + # Verbs and shortcuts + # You can define your own commands which would be applied to + # the selection. + # You'll also find below verbs that you can customize or enable. + verbs: [ + + # Example 1: launching `tail -n` on the selected file (leaving broot) + # { + # name: tail_lines + # invocation: tl {lines_count} + # execution: "tail -f -n {lines_count} {file}" + # } + + # Example 2: creating a new file without leaving broot + # { + # name: touch + # invocation: touch {new_file} + # execution: "touch {directory}/{new_file}" + # leave_broot: false + # } + + # A standard recommended command for editing files, that you + # can customize. + # If $EDITOR isn't set on your computer, you should either set it using + # something similar to + # export EDITOR=nvim + # or just replace it with your editor of choice in the 'execution' + # pattern. + # If your editor is able to open a file on a specific line, use {line} + # so that you may jump directly at the right line from a preview. + # Example: + # execution: nvim +{line} {file} + { + invocation: edit + shortcut: e + execution: "$EDITOR +{line} {file}" + leave_broot: false + } + + # A convenient shortcut to create new text files in + # the current directory or below + { + invocation: create {subpath} + execution: "$EDITOR {directory}/{subpath}" + leave_broot: false + } + + { + invocation: git_diff + shortcut: gd + leave_broot: false + execution: "git difftool -y {file}" + } + + # On ctrl-b, propose the creation of a copy of the selection. + # While this might occasionally be useful, this verb is mostly here + # as an example to demonstrate rare standard groups like {file-stem} + # and {file-dot-extension} and the auto_exec verb property which + # allows verbs not executed until you hit enter + { + invocation: "backup {version}" + key: ctrl-b + leave_broot: false + auto_exec: false + execution: "cp -r {file} {parent}/{file-stem}-{version}{file-dot-extension}" + } + + # This verb lets you launch a terminal on ctrl-T + # (on exit you'll be back in broot) + { + invocation: terminal + key: ctrl-t + execution: "$SHELL" + set_working_dir: true + leave_broot: false + } + + # Here's an example of a shortcut bringing you to your home directory + # { + # invocation: home + # key: ctrl-home + # execution: ":focus ~" + # } + + # A popular set of shortcuts for going up and down: + # + # { + # key: ctrl-k + # execution: ":line_up" + # } + # { + # key: ctrl-j + # execution: ":line_down" + # } + # { + # key: ctrl-u + # execution: ":page_up" + # } + # { + # key: ctrl-d + # execution: ":page_down" + # } + + # If you develop using git, you might like to often switch + # to the git status filter: + # { + # key: ctrl-g + # execution: ":toggle_git_status" + # } + + # You can reproduce the bindings of Norton Commander + # on copying or moving to the other panel: + # { + # key: F5 + # external: "cp -r {file} {other-panel-directory}" + # leave_broot: false + # } + # { + # key: F6 + # external: "mv {file} {other-panel-directory}" + # leave_broot: false + # } + ] + + ############################################################### + # Skin + # If you want to change the colors of broot, + # uncomment the following bloc and start messing + # with the various values. + # A skin entry value is made of two parts separated with a '/': + # The first one is the skin for the active panel. + # The second one, optional, is the skin for non active panels. + # You may find explanations and other skins on + # https://dystroy.org/broot/skins + ############################################################### + # If you only want to set the default color and a transparent + # background, uncomment this simplified skin: + # skin: { + # default: none none / gray(20) none + # } + # + # To experiment with a whole skin, uncomment this one: + # skin: { + # default: gray(23) none / gray(20) none + # tree: ansi(94) None / gray(3) None + # parent: gray(18) None / gray(13) None + # file: gray(20) None / gray(15) None + # directory: ansi(208) None Bold / ansi(172) None bold + # exe: Cyan None + # link: Magenta None + # pruning: gray(12) None Italic + # perm__: gray(5) None + # perm_r: ansi(94) None + # perm_w: ansi(132) None + # perm_x: ansi(65) None + # owner: ansi(138) None + # group: ansi(131) None + # count: ansi(136) gray(3) + # dates: ansi(66) None + # sparse: ansi(214) None + # content_extract: ansi(29) None + # content_match: ansi(34) None + # git_branch: ansi(229) None + # git_insertions: ansi(28) None + # git_deletions: ansi(160) None + # git_status_current: gray(5) None + # git_status_modified: ansi(28) None + # git_status_new: ansi(94) None Bold + # git_status_ignored: gray(17) None + # git_status_conflicted: ansi(88) None + # git_status_other: ansi(88) None + # selected_line: None gray(5) / None gray(4) + # char_match: Yellow None + # file_error: Red None + # flag_label: gray(15) None + # flag_value: ansi(208) None Bold + # input: White None / gray(15) gray(2) + # status_error: gray(22) ansi(124) + # status_job: ansi(220) gray(5) + # status_normal: gray(20) gray(3) / gray(2) gray(2) + # status_italic: ansi(208) gray(3) / gray(2) gray(2) + # status_bold: ansi(208) gray(3) Bold / gray(2) gray(2) + # status_code: ansi(229) gray(3) / gray(2) gray(2) + # status_ellipsis: gray(19) gray(1) / gray(2) gray(2) + # purpose_normal: gray(20) gray(2) + # purpose_italic: ansi(178) gray(2) + # purpose_bold: ansi(178) gray(2) Bold + # purpose_ellipsis: gray(20) gray(2) + # scrollbar_track: gray(7) None / gray(4) None + # scrollbar_thumb: gray(22) None / gray(14) None + # help_paragraph: gray(20) None + # help_bold: ansi(208) None Bold + # help_italic: ansi(166) None + # help_code: gray(21) gray(3) + # help_headers: ansi(208) None + # help_table_border: ansi(239) None + # preview: gray(20) gray(1) / gray(18) gray(2) + # preview_line_number: gray(12) gray(3) + # preview_match: None ansi(29) + # hex_null: gray(11) None + # hex_ascii_graphic: gray(18) None + # hex_ascii_whitespace: ansi(143) None + # hex_ascii_other: ansi(215) None + # hex_non_ascii: ansi(167) None + # } + + + ############################################################### + # File Extension Colors + # + # uncomment and modify the next section if you want to color + # file name depending on their extension + # + # ext_colors: { + # png: rgb(255, 128, 75) + # rs: yellow + # } + + + ############################################################### + # Max Panels Count + # + # Change this if you sometimes want to have more than 2 panels + # open + # max_panels_count: 2 +} diff --git a/config_in/fish/config.fish b/config_in/fish/config.fish index c70d14c..1531f73 100644 --- a/config_in/fish/config.fish +++ b/config_in/fish/config.fish @@ -16,4 +16,5 @@ set -x theme_nerd_fonts yes set -x fish_prompt_pwd_dir_length 0 fish_vi_key_bindings -fish_user_key_bindings \ No newline at end of file +fish_user_key_bindings +fzf_key_bindings \ No newline at end of file diff --git a/config_in/nvim/init.vim b/config_in/nvim/init.vim index a6fd299..6101cf6 100644 --- a/config_in/nvim/init.vim +++ b/config_in/nvim/init.vim @@ -9,7 +9,8 @@ set number " turn on line numbers " ----------------------------- Plugins ------------------------------ call plug#begin() -Plug 'justinmk/vim-sneak' -Plug 'easymotion/vim-easymotion' -Plug 'sheerun/vim-polyglot' +Plug 'justinmk/vim-sneak' " s two character search +Plug 'easymotion/vim-easymotion' " \\ w to jump around quickly +Plug 'sheerun/vim-polyglot' " syntax highlighting for many langs +Plug 'junegunn/fzf' " fuzzy finder call plug#end() \ No newline at end of file