Dotar is an all-in-one dev configuration for your mac/linux which includes setup for zsh, spacevim(nvim), tmux and many more
# The story Dotar got its name by the combination of `dot` and `tar` which means package(`tar`) dotfiles togeter. # Get started ## Requirements * `zsh`, `tmux`, `vim`, `ag` are installed and zsh is set as your login shell: ```sh chsh -s $(which zsh) ``` * `Python 3` and `pynvim` as some layers(`denite`) can't be loaded if they are missing ```sh python3 -m pip install --user --upgrade pynvim ``` ## Install ```sh bash -c "`curl -fsSL https://git.bitnet.fun/Gaze/dotar/raw/commit/21638953a830aa657b1e0fe1b14ff65a1694ef60/install.sh`" ``` ## Upgrade ```sh cd ~/.yadr git pull --rebase rake update ``` # Modules * ZSH * [Prezto - the zsh behind YADR's](http://github.com/sorin-ionescu/prezto) * [How to add your own ZSH theme](doc/zsh/themes.md) ## Zsh Commands #### [Files](./zsh/files.zsh) Command | Args | Description :--------|:------|:----------- swap | F1 F2 | swap file F1 with file F2 Replace |[doc](#Replace) |Replace text recursively Replace options: ```sh -f File regex pattern -s Source pattern -d Destination pattern -r Remove line --regex Match pattern with regex --seperator= Seperator, # by default -h Display this message" ``` #### Editing Shortcut | Alias :-----------|:-------- Ctrl-R | Vim mode and bash style historical anti-query ae | Edit alias ar | Reload alias ESC C-x C-e |Edit current command line in vim #### Network Command | Description :-----------|:-------- test-port PORT | test whether PORT is opened intercept-request-hosts | intercept requests and show hosts host-ip | show host ip of your system #### System Command | Description :-----------|:-------- yell | print the script name and all arguments to stderr die | does the same as yell, but exits with a non-0 exit status, which means "fail". try | uses the || (boolean OR), which only evaluates the right side if the left one didn’t fail. list-large-files DIR | list large files sort by reversed order of size and print size in the order of `KB`, `MB`, `GB` #### String Command | Description :------------|:-------- random-hex | print random hex random-string| print random string of alphabets `a-zA-Z0-9` contains |str1 str2 ... target |test whether a target string is included in an array of strings #### Git YADR will take over your ~/.gitconfig, so if you want to store your git username and other settings, please put them in ~/.gitconfig.user We recommend setting your user information in this file. In addition, you can set your environment variables appropriately in your ~/.secrets. Command | Alias :--------|:-------- `ga` |`git add` `gb` |`git branch` `gbc` or `gnb` |`git checkout -b` `gbs` |`git show-branch` `gc` |`git commit --verbose` `gco` |`git checkout` `gcp` |`git cherry-pick --ff` `gd` |`git diff` `gf` |`git fetch` `gfc` |`git clone` `gfm` |`git pull` `gfr` |`git pull --rebase` `gl` |`git log` `gpc` |`git push --set-upstream origin "$(git-branch-current 2> /dev/null)"` `gr` |`git rebase` `gra` |`git rebase --abort` `grc` |`git rebase --continue` `grs` |`git rebase --skip` `gsd` |`git stash drop` `gsl` |`git stash list` `gsp` |`git stash pop` `gst` |`git stash` #### Other - `secure_source` -source `~/.yadr/zsh/function.zsh` file, let `function.zsh` modify work immediately in current window - `pp $1` -useage:`pp xx`, grep process by name - `set_proxy` -set terminal proxy use http proxy - `set_vagrant_proxy` -set terminal proxy use vagrant http proxy - `set_ss_proxy` -set terminal proxy use socks proxy - `unset_proxy` -cancel all proxy - `post $1 $2` -curl POST with application/json - `docker_rm_all` -delete all docker images - `kexec` -execute k8s pod by regex pod name - `klog` -show k8s pod log by regex pod name - `git_tag_delete` -delete gtihub tag - `git_tag_add` -add gtihub tag - `dc` -alias of docker-compose ## [fasd](https://github.com/clvv/fasd) The name fasd comes from the default suggested aliases f(files), a(files/directories), s(show/search/select), d(directories). Some situations where you can type in the command on the left and fasd will "expand" your command into the right side. ``` v def conf => vim /some/awkward/path/to/type/default.conf j abc => cd /hell/of/a/awkward/path/to/get/to/abcdef m movie => mplayer /whatever/whatever/whatever/awesome_movie.mp4 o eng paper => xdg-open /you/dont/remember/where/english_paper.pdf vim `f rc lo` => vim /etc/rc.local vim `f rc conf` => vim /etc/rc.conf ``` Fasd comes with some useful aliases by default: ```sh alias a='fasd -a' # any alias s='fasd -si' # show / search / select alias d='fasd -d' # directory alias f='fasd -f' # file alias sd='fasd -sid' # interactive directory selection alias sf='fasd -sif' # interactive file selection alias z='fasd_cd -d' # cd, same functionality as j in autojump alias zz='fasd_cd -d -i' # cd with interactive selection ``` Fasd will smartly detect when to display a list of files or just the best match. For instance, when you call fasd in a subshell with some search parameters, fasd will only return the best match. This enables you to do: ```sh mv update.html `d www` cp `f mov` . ``` ## Tmux #### Settings `tmux.conf` provides some reasonable default settings for tmux on Mac OS, such as a powerful status bar and VIM keyboard bindings. You can modify the configuration in `~/.tmux.conf.user`. #### Shortcuts Prefix is defined as `C-a`(`PRE` for short) Shortcut | Function :---------|:-------- C-h(jkl) |←(↓↑→)Move pane PRE c |Craete a new pane PRE s |Split panes up and down PRE v |Split panes left and right PRE x |Kill pane PRE h(jkl)|←(↓↑→)Move dividing line PRE , |Rename window PRE d |Exit Session PRE D |Exit Session PRE 1 |Enter pane 1 PRE >/< |Cheatsheet PRE {/} |Move pane to previous/next position PRE C-o |rotate window ‘up’ (i.e. move all panes) PRE M-o |rotate window ‘down’ PRE z |Zoom/Unzoom PRE m |Mark PRE ! |Move the current pane into a new separate PRE o |Go to the next pane (cycle through all of them) PRE ; |Go to the ‘last’ (previously used) pane > `C` is short for `Ctrl` Press `PRE [` to enter Scroll Mode Shortcut | Function | :--------|:---------| `Shift-V`| Select Text| `Enter` | Copy Text | `]` | Paste text copied from scroll mode | ## Vim & Spacevim * `