From d52d58100676d5ae5a5ae0122479bdbac6fbd9c9 Mon Sep 17 00:00:00 2001 From: Klesh Wong Date: Sun, 15 Nov 2020 01:37:26 +0800 Subject: [PATCH 1/4] [bugfix] fish `end` indented wrong --- nvim/config/init.vim | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/nvim/config/init.vim b/nvim/config/init.vim index d912a67..281fa7e 100644 --- a/nvim/config/init.vim +++ b/nvim/config/init.vim @@ -65,8 +65,8 @@ nmap ' ysiw' nmap `` ysiW` nmap ` ysiw` -nmap sb :set scrollbind -nmap nsb :set noscrollbind +nmap sb :windo set scrollbind:windo set cursorbind:set mouse=a +nmap nsb :windo set noscrollbind:windo set nocursorbind:set mouse= inoremap nmap ss :syntax sync fromstart @@ -121,7 +121,8 @@ Plug 'tpope/vim-fugitive' " git 功能 Plug 'scrooloose/nerdcommenter' Plug 'mhinz/vim-grepper', { 'on': ['Grepper', '(GrepperOperator)'] } Plug 'morhetz/gruvbox' -Plug 'dag/vim-fish', { 'for': 'fish' } +Plug 'klesh/vim-fish', { 'for': 'fish' } +"Plug 'aliva/vim-fish', { 'for': 'fish' } Plug 'alvan/vim-closetag', { 'for': ['vue', 'html', 'xml'] } "Plug 'airblade/vim-gitgutter' Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } From 986c02137139b37880b12e5f8e463bc5c1addd18 Mon Sep 17 00:00:00 2001 From: Klesh Wong Date: Sun, 15 Nov 2020 01:37:58 +0800 Subject: [PATCH 2/4] [feature] use primary monitor dpi instead of min --- suckless/config/autorandr/postswitch | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/suckless/config/autorandr/postswitch b/suckless/config/autorandr/postswitch index d24db78..fb37c45 100755 --- a/suckless/config/autorandr/postswitch +++ b/suckless/config/autorandr/postswitch @@ -4,19 +4,13 @@ xrandr | awk ' -BEGIN { - MIN_DPI=99999999 -} -$2 == "connected" { - if (match($0, / ([0-9]+)x([0-9]+)\+([0-9]+)\+([0-9]+) /, m1) && +$2 == "connected" && $3 == "primary" { + if (match($0, / ([0-9]+)x([0-9]+)\+([0-9]+)\+([0-9]+) (left|right)?/, m1) && match($0, / ([0-9]+)mm x ([0-9]+)mm$/, m2)) { - DPI=m1[1]*25.4/m2[1] - if (DPI < MIN_DPI) MIN_DPI=DPI + DPI=m1[1]*25.4/m2[m1[5]?2:1] + printf "Xft.dpi: %i", DPI } } -END { - printf "Xft.dpi: %i", MIN_DPI+0.5 -} ' | xrdb -merge nitrogen --restore From 1026a8f76a86f3427e9a3cd2ed017d9a4c7b4012 Mon Sep 17 00:00:00 2001 From: Klesh Wong Date: Mon, 16 Nov 2020 00:19:29 +0800 Subject: [PATCH 3/4] [misc] move function to functions folder --- fish/config/config.fish | 93 +++++--------------- fish/config/functions/append_paths.fish | 6 ++ fish/config/functions/clean_taobao_link.fish | 4 + fish/config/functions/print_colors.fish | 8 ++ fish/config/functions/r.fish | 13 +++ fish/config/functions/source_files.fish | 6 ++ fish/config/functions/sync_ssh_config.fish | 13 +++ fish/install.sh | 3 + 8 files changed, 76 insertions(+), 70 deletions(-) create mode 100644 fish/config/functions/append_paths.fish create mode 100644 fish/config/functions/clean_taobao_link.fish create mode 100644 fish/config/functions/print_colors.fish create mode 100644 fish/config/functions/r.fish create mode 100644 fish/config/functions/source_files.fish create mode 100644 fish/config/functions/sync_ssh_config.fish diff --git a/fish/config/config.fish b/fish/config/config.fish index 5292d52..a9173fd 100644 --- a/fish/config/config.fish +++ b/fish/config/config.fish @@ -1,98 +1,45 @@ -#!/usr/bin/env fish - -# datetime in filename format -function dt - date "+%Y%m%d-%H%M%S" -end - -function clean-taobao-link - xsel -ob | sed 's/^\(.*\)?\(.*&\)\?\(id=[^&]\+\).*$/\1?\3/g' | xsel -b -end - -# for WSL -function sync-ssh-config - # sshconfig has a restricted file permission requirement which normally hard to - # be met on Window (i.e., syncing your config by Nextcloud on drive D). - # this function pours contents of files within ~/.ssh/config.d to ~/.ssh/config - if test -d ~/.ssh/config.d - rm -rf ~/.ssh/config - for cfg in (ls ~/.ssh/config.d) - cat ~/.ssh/config.d/$cfg >> ~/.ssh/config - end - chmod 600 ~/.ssh/config - end -end - -function swap-caps-esc - setxkbmap -option caps:swapescape -end - -function caps-to-grave - xmodmap -e "clear Lock" - xmodmap -e "keycode 66 = grave asciitilde" -end - -# print out all colors with their index -function show-colors - bash -c '(x=`tput op` y=`printf %76s`;for i in {0..256};do o=00$i;echo -e ${o:${#o}-3:3} `tput setaf $i;tput setab $i`${y// /=}$x;done)' -end +#!/bin/fish if status is-interactive + # === default programs set -gx EDITOR nvim - # enable fzf completion hotkey + # === fzf configuration set -gx FZF_DEFAULT_COMMAND 'ag -g ""' set -U FZF_COMPLETE 0 set -U FZF_FIND_FILE_COMMAND 'ag -g ""' set -U FZF_OPEN_COMMAND 'ag -g ""' + + # === less configuration # no line-wrapping, good for `docker ps` set -gx LESS "-SRXF" - # nvm plugin + + # === nvm configuration set -gx nvm_mirror http://npm.taobao.org/mirrors/node + + # === `ls` configuration # change OTHER-WRITABLE color for `ls` command set -gx LS_COLORS 'ow=34;42;40' + + # === ranger configuration # ranger highlighting color theme set -gx HIGHLIGHT_OPTIONS --style=solarized-dark - # dict.sh + + # === dict.sh configuration set -gx D_SELECTOR 'plainsel' + # === fish git prompt configuration # tune git icon for nerdfont set -g __fish_git_prompt_char_upstream_ahead '>' set -g __fish_git_prompt_char_upstream_behind '<' set -g __fish_git_prompt_char_upstream_prefix '' - set -g __fish_git_prompt_char_stagedstate '●' set -g __fish_git_prompt_char_dirtystate '*' set -g __fish_git_prompt_char_untrackedfiles '+' set -g __fish_git_prompt_char_conflictedstate 'x' set -g __fish_git_prompt_char_cleanstate '✔ ' - function append-path-if-exists - if test -e $argv - set -gx PATH $argv $PATH - end - end - - function source-file-if-exists - for f in $argv - test -e $f && source $f && return - end - end - - function r --description='sync ranger pwd to shell when exit' - set tempfile (mktemp -t tmp.XXXXXX) - command ranger --choosedir=$tempfile $argv - if test -s $tempfile - set ranger_pwd (cat $tempfile) - if test -n $ranger_pwd -a -d $ranger_pwd - builtin cd -- $ranger_pwd - end - end - - command rm -f -- $tempfile - end - - append-path-if-exists ~/.yarn/bin + # === alias alias k="kubectl" alias kcc="k config get-contexts" alias kcu="k config use-context" @@ -102,8 +49,14 @@ if status is-interactive alias kl="k logs -f --all-containers" alias issh='ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"' alias iscp='scp -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"' + alias dt='date "+%Y%m%d-%H%M%S"' + + # === PATH and file sourcing + append_paths ~/.yarn/bin + source_files /usr/share/autojump/autojump.fish /usr/local/share/autojump/autojump.fish \ + ~/.profile.fish + + # === auto cd into last activated directory cd $last_pwd - source-file-if-exists /usr/share/autojump/autojump.fish /usr/local/share/autojump/autojump.fish - source-file-if-exists ~/.profile.fish end diff --git a/fish/config/functions/append_paths.fish b/fish/config/functions/append_paths.fish new file mode 100644 index 0000000..67aa141 --- /dev/null +++ b/fish/config/functions/append_paths.fish @@ -0,0 +1,6 @@ + +function append_paths + for f in $argv + test -e $f && set -gx PATH $f $PATH + end +end diff --git a/fish/config/functions/clean_taobao_link.fish b/fish/config/functions/clean_taobao_link.fish new file mode 100644 index 0000000..481c6c0 --- /dev/null +++ b/fish/config/functions/clean_taobao_link.fish @@ -0,0 +1,4 @@ + +function clean_taobao_link -d 'keep only id parameter for taobao merchandise detail page link' + xsel -ob | sed 's/^\(.*\)?\(.*&\)\?\(id=[^&]\+\).*$/\1?\3/g' | xsel -b +end diff --git a/fish/config/functions/print_colors.fish b/fish/config/functions/print_colors.fish new file mode 100644 index 0000000..9e1075e --- /dev/null +++ b/fish/config/functions/print_colors.fish @@ -0,0 +1,8 @@ + +function print_colors -d 'print out all terminal colors' + set x (tput op) + set y (printf '%76s') + for i in (seq 256) + printf "%3s %s%s%s%s\n" $i (tput setaf $i) (tput setab $i) $y $x + end +end diff --git a/fish/config/functions/r.fish b/fish/config/functions/r.fish new file mode 100644 index 0000000..7657d88 --- /dev/null +++ b/fish/config/functions/r.fish @@ -0,0 +1,13 @@ + +function r --description='sync ranger pwd to shell when exit' + set tempfile (mktemp -t tmp.XXXXXX) + command ranger --choosedir=$tempfile $argv + if test -s $tempfile + set ranger_pwd (cat $tempfile) + if test -n $ranger_pwd -a -d $ranger_pwd + builtin cd -- $ranger_pwd + end + end + + command rm -f -- $tempfile +end diff --git a/fish/config/functions/source_files.fish b/fish/config/functions/source_files.fish new file mode 100644 index 0000000..8cf400b --- /dev/null +++ b/fish/config/functions/source_files.fish @@ -0,0 +1,6 @@ + +function source_files + for f in $argv + test -e $f && source $f && return + end +end diff --git a/fish/config/functions/sync_ssh_config.fish b/fish/config/functions/sync_ssh_config.fish new file mode 100644 index 0000000..079581c --- /dev/null +++ b/fish/config/functions/sync_ssh_config.fish @@ -0,0 +1,13 @@ + +function sync_ssh_config -d 'sync ssh config file for wsl' + # sshconfig has a restricted file permission requirement which normally hard to + # be met on Window (i.e., syncing your config by Nextcloud on drive D). + # this function pours contents of files within ~/.ssh/config.d to ~/.ssh/config + if test -d ~/.ssh/config.d + rm -rf ~/.ssh/config + for cfg in (ls ~/.ssh/config.d) + cat ~/.ssh/config.d/$cfg >> ~/.ssh/config + end + chmod 600 ~/.ssh/config + end +end diff --git a/fish/install.sh b/fish/install.sh index 1667ca1..139d714 100755 --- a/fish/install.sh +++ b/fish/install.sh @@ -47,6 +47,9 @@ lnsf "$DIR/config/config.fish" "$XDG_CONFIG_HOME/fish/config.fish" lnsf "$DIR/config/functions/fish_prompt.fish" "$XDG_CONFIG_HOME/fish/functions/fish_prompt.fish" lnsf "$DIR/config/functions/fish_right_prompt.fish" "$XDG_CONFIG_HOME/fish/functions/fish_right_prompt.fish" lnsf "$DIR/config/functions/fisher.fish" "$XDG_CONFIG_HOME/fish/functions/fisher.fish" +lnsf "$DIR/config/functions/r.fish" "$XDG_CONFIG_HOME/fish/functions/r.fish" +lnsf "$DIR/config/functions/append_paths.fish" "$XDG_CONFIG_HOME/fish/functions/append_paths.fish" +lnsf "$DIR/config/functions/source_files.fish" "$XDG_CONFIG_HOME/fish/functions/source_files.fish" # install plugins # for better keybinding: C-o open file with $EDITOR / C-r search history / C-g open with xdg-open From 661061654b5e7101f12539ffcc00eb60d1c8bea9 Mon Sep 17 00:00:00 2001 From: Klesh Wong Date: Mon, 16 Nov 2020 00:19:57 +0800 Subject: [PATCH 4/4] [feature] enable mouse and // for searching selected --- nvim/config/init.vim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nvim/config/init.vim b/nvim/config/init.vim index 281fa7e..ff4ec48 100644 --- a/nvim/config/init.vim +++ b/nvim/config/init.vim @@ -22,6 +22,7 @@ set signcolumn=yes set laststatus=2 set fillchars=vert:\ ,fold:- set clipboard=unnamedplus " system clipboard as default register. for vim to work need installing gvim package +set mouse=a filetype plugin indent on syntax on au! BufWritePost $MYVIMRC source % @@ -71,6 +72,8 @@ nmap nsb :windo set noscrollbind:windo set nocursorbind:set mous inoremap nmap ss :syntax sync fromstart +" // to search highlighted text +vnoremap // y/\V=escape(@",'/\') " trailing spaces highlight ExtraWhitespace ctermbg=red guibg=red