diff --git a/.vim/startup/vundle_vimrc b/.vim/startup/vundle_vimrc index 74550ae..637d470 100644 --- a/.vim/startup/vundle_vimrc +++ b/.vim/startup/vundle_vimrc @@ -56,7 +56,7 @@ Plug 'ekalinin/Dockerfile.vim' Plug 'hotoo/pangu.vim' Plug 'chr4/nginx.vim' Plug 'mileszs/ack.vim' -Plug 'jlanzarotta/bufexplorer' +" Plug 'jlanzarotta/bufexplorer' Plug 'mikelue/vim-maven-plugin' " Plug 'w0rp/ale' @@ -66,6 +66,7 @@ Plug 'tomtom/tlib_vim' Plug 'garbas/vim-snipmate' Plug 'ntpeters/vim-better-whitespace' Plug '907th/vim-auto-save' +Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': '.install -all'} Plug 'junegunn/fzf.vim' " Git plugin not hosted on GitHub diff --git a/.zshrc b/.zshrc index 813e48b..3d09f13 100644 --- a/.zshrc +++ b/.zshrc @@ -268,6 +268,8 @@ alias cp="cp -i" alias df="df -h" alias free="free -m" alias grep="grep --color=auto" +alias open="xdg-open" + #transfer() { if [ $# -eq 0 ]; then echo -e "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"; return 1; fi #tmpfile=$( mktemp -t transferXXX ); if tty -s; then basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9._-]/-/g'); curl --progress-bar --upload-file "$1" "https://transfer.sh/$basefile" >> $tmpfile; else curl --progress-bar --upload-file "-" "https://transfer.sh/$1" >> $tmpfile ; fi; cat $tmpfile; rm -f $tmpfile; } @@ -295,5 +297,117 @@ alias adbcap="adb shell screencap -p" # fzf config [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh -export FZF_DEFAULT_COMMAND='ag -g ""' -export FZF_DEFAULT_OPTS="--reverse --inline-info" +export FZF_DEFAULT_COMMAND='ag --hidden --ignore .git --ignore .idea -l -g ""' +#export FZF_DEFAULT_OPTS="--reverse --inline-info" +export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --preview '(highlight -O ansi {} || cat {}) 2> /dev/null | head -500'" + +# fe [FUZZY PATTERN] - Open the selected file with the default editor +# - Bypass fuzzy finder if there's only one match (--select-1) +# - Exit if there's no match (--exit-0) +fe() { + local files + IFS=$'\n' files=($(fzf-tmux --query="$1" --multi --select-1 --exit-0)) + [[ -n "$files" ]] && ${EDITOR:-vim} "${files[@]}" +} + +# Modified version where you can press +# - CTRL-O to open with `open` command, +# - CTRL-E or Enter key to open with the $EDITOR +fo() { + local out file key + IFS=$'\n' out=("$(fzf-tmux --query="$1" --exit-0 --expect=ctrl-o,ctrl-e)") + key=$(head -1 <<< "$out") + file=$(head -2 <<< "$out" | tail -1) + if [ -n "$file" ]; then + [ "$key" = ctrl-o ] && open "$file" || ${EDITOR:-vim} "$file" + fi +} + +# Use fd and fzf to get the args to a command. +# Works only with zsh +# Examples: +# f mv # To move files. You can write the destination after selecting the files. +# f 'echo Selected:' +# f 'echo Selected music:' --extention mp3 +# fm rm # To rm files in current directory +f() { + sels=( "${(@f)$(fd "${fd_default[@]}" "${@:2}"|fz)}" ) + test -n "$sels" && print -z -- "$1 ${sels[@]:q:q}" +} + +# Like f, but not recursive. +fm() f "$@" --max-depth 1 + +# Deps +alias fz="fzf-noempty --bind 'tab:toggle,shift-tab:toggle+beginning-of-line+kill-line,ctrl-j:toggle+beginning-of-line+kill-line,ctrl-t:top' --color=light -1 -m" +fzf-noempty () { + local in="$( /dev/null | fzf +m) && + cd "$dir" +} + +# fh - repeat history +fh() { + print -z $( ([ -n "$ZSH_NAME" ] && fc -l 1 || history) | fzf +s --tac | sed -r 's/ *[0-9]*\*? *//' | sed -r 's/\\/\\\\/g') +} + +# fkill - kill process +fkill() { + local pid + pid=$(ps -ef | sed 1d | fzf -m | awk '{print $2}') + + if [ "x$pid" != "x" ] + then + echo $pid | xargs kill -${1:-9} + fi +} + +# tm - create new tmux session, or switch to existing one. Works from within tmux too. (@bag-man) +# `tm` will allow you to select your tmux session via fzf. +# `tm irc` will attach to the irc session (if it exists), else it will create it. + +tm() { + [[ -n "$TMUX" ]] && change="switch-client" || change="attach-session" + if [ $1 ]; then + tmux $change -t "$1" 2>/dev/null || (tmux new-session -d -s $1 && tmux $change -t "$1"); return + fi + session=$(tmux list-sessions -F "#{session_name}" 2>/dev/null | fzf --exit-0) && tmux $change -t "$session" || echo "No sessions found." +} + +# fs [FUZZY PATTERN] - Select selected tmux session +# - Bypass fuzzy finder if there's only one match (--select-1) +# - Exit if there's no match (--exit-0) +fs() { + local session + session=$(tmux list-sessions -F "#{session_name}" | \ + fzf --query="$1" --select-1 --exit-0) && + tmux switch-client -t "$session" +} + +unalias z 2> /dev/null +z() { + [ $# -gt 0 ] && _z "$*" && return + cd "$(_z -l 2>&1 | fzf --height 40% --nth 2.. --reverse --inline-info +s --tac --query "${*##-* }" | sed 's/^[0-9,.]* *//')" +} + + +#alias lp="lpass show -c --password $(lpass ls | fzf | awk '{print $(NF)}' | sed 's/\]//g')" diff --git a/README.md b/README.md index 2d0ee79..fd46b59 100644 --- a/README.md +++ b/README.md @@ -61,3 +61,13 @@ Tmux 配置參考了 [gpakosz](https://github.com/gpakosz/.tmux) 的大部分配 set -g @plugin 'tmux-plugins/tmux-sensible' set -g @plugin 'tmux-plugins/tmux-yank' + +## fzf config +There are following alias in `.zshrc` : + +- fe : open file using $EDITOR +- fo : open file Ctrl-o using open, Ctrl-e use $EDITOR +- fd : cd path +- fkill : kill process +- tm : tm new tmux session +- fs : tmux attach tmux session diff --git a/tmux/.tmux.conf b/tmux/.tmux.conf index 125a2d5..610133e 100644 --- a/tmux/.tmux.conf +++ b/tmux/.tmux.conf @@ -133,21 +133,21 @@ set-option -g status-justify centre # set -g pane-active-border-bg default # set color of command line -set -g message-fg white -set -g message-bg colour22 -set -g message-attr bright +#set -g message-fg white +#set -g message-bg colour22 +#set -g message-attr bright set -g status-right '#[fg=colour233,bg=colour241,bold] %d/%m #[fg=colour233,bg=colour245,bold] %H:%M:%S ' set -g status-right-length 50 # 设置当前窗口格式及颜色 setw -g window-status-current-format "#[bg=brightmagenta]#[fg=colour8] #I #[fg=colour8]#[bg=colour14] #W " -setw -g window-status-current-bg colour0 -setw -g window-status-current-fg colour11 -setw -g window-status-current-attr dim -setw -g window-status-fg cyan -setw -g window-status-bg colour234 -setw -g window-status-attr dim +#setw -g window-status-current-bg colour0 +#setw -g window-status-current-fg colour11 +#setw -g window-status-current-attr dim +#setw -g window-status-fg cyan +#setw -g window-status-bg colour234 +#setw -g window-status-attr dim # user defined if '[ -f ~/.tmux.conf.local ]' 'source ~/.tmux.conf.local' diff --git a/ubuntu_init.sh b/ubuntu_init.sh new file mode 100644 index 0000000..1921e9c --- /dev/null +++ b/ubuntu_init.sh @@ -0,0 +1,38 @@ +#!/bin/bash - +#=============================================================================== +# +# FILE: ubuntu_init.sh +# +# USAGE: ./ubuntu_init.sh +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: YOUR NAME (), +# ORGANIZATION: +# CREATED: 08/30/2019 03:21:28 PM +# REVISION: --- +#=============================================================================== + +set -o nounset # Treat unset variables as an error + + +sudo apt install -y vim \ + exuberant-ctags \ + fcitx \ + fcitx-rime \ + fcitx-module-cloudpinyin \ + gimp \ + inkscape \ + shutter \ + audacity \ + numix-gtk-theme \ + numix-icon* \ + ultra-flat-icons-* \ + ultra-flat-icons \ + uget \ + telegram \ + fonts-emojione-svginot