git clone --depth 1 https://github.com/ik0r/dotfiles.git ~/.dotfiles
cd ~/.dotfilesAll available tasks:
- editorconfig
- git_alias
- git_config
- git_diff_so_fancy
- git_difftool_kaleidoscope
- git_mergetool_kaleidoscope
- git_difftool_vscode
- git_mergetool_vscode
- git_extras
- homebrew
- tmux
- vim_rc
- nvim
- nvim_plugins_treesitter
- zsh_common
- zsh_omz
- zsh_omz_cfg
- zsh_omz_plugins_fzf
- zsh_omz_plugins_git_diff_so_fancy
- zsh_omz_plugins_zlua
- zsh_zim
- zsh_zim_plugins_fzf
- zsh_zim_plugins_git_diff_so_fancy
- zsh_zim_plugins_omz_tmux
- zsh_zim_plugins_pure
- zsh_zim_plugins_zlua
You can do a specific task by run
./install.sh <taskname1>[ <taskname2> <tasknameN> ...]-
Install global
.editorconfigto you home. You can see what config is used. -
Requirement(s):
gitInstall
gitaliasfor git. gitalias has many useful alias. -
Requirement(s):
gitThis task will ask you what username and email you want to config global for git.
-
Requirement(s):
gitInstall
diff-so-fancyplugin for git. Please see diff-so-fancyIf you use zsh, you can try the zsh plugin version task zsh_omz_plugins_git_diff_so_fancy or task zsh_zim_plugins_git_diff_so_fancy
-
Requirement(s):
MAC,git,Kaleidoscope(ksdiff)Config git's difftool to Kaleidoscope.
Kaleidoscope is a sooooo excellent diff and merge tool
-
Requirement(s):
MAC,git,Kaleidoscope(ksdiff)Config git's mergetool to Kaleidoscope.
Kaleidoscope is a sooooo excellent diff and merge tool
-
Requirement(s):
git,VSCodeConfig git's difftool to VSCode.
-
Requirement(s):
git,VSCodeConfig git's mergetool to VSCode.
-
Requirement(s):
gitInstall
git-extrasplugin for git. git-extras( Linux, OS X ) has some useful tools for git. -
Requirement(s):
curlInstall homebrew for OS X and Linux(aka. linuxbrew on Linux).
-
Requirement(s):
git,tmuxtmux plugins
-
Requirement(s):
git,vimSymlink a zero-plugin, sensible-defaults
vimrcinto place. vim here is the fallback editor: it works offline and out of the box on any machine (servers included), with no plugin manager to bootstrap. For a richer setup use the nvim task instead.On OS X you may want a newer vim than the system one (the system build can't use the
+clipboard register):brew install vim # or: brew install macvimYou can add your own machine-local overrides in
~/.vimrc.local; vim sources it automatically (it is git-ignored, lives in$HOME). -
Requirement(s):
git,nvimSymlink the
nvim/config to~/.config/nvimand runLazy syncto install plugins. This config is based on lazy.nvim.The base install stays light: only a colorscheme plus a couple of small, dependency-free editing plugins (telescope, surround) load by default. Heavier functional plugins are opt-in — enable them with the
nvim_plugins_*subtasks below, mirroring the zshzsh_*_plugins_*model. Each subtask writes a switch line into~/.nvimrc.local(git-ignored, lives in$HOME, loaded byinit.luabefore lazy). Plugins you never enable are never installed, andLazy syncprunes anything you turn back off. -
Requirement(s):
git,nvim, task nvimEnable nvim-treesitter (the rewritten
mainbranch) for accurate syntax highlighting and indentation.It is opt-in because it is comparatively heavy: the
mainbranch builds parsers locally via thetree-sitterCLI. This task installs the CLI throughbrewwhen available (otherwise install it yourself:brew install tree-sitter-cliorcargo install tree-sitter-cli), flips the switch in~/.nvimrc.local, and runsLazy sync. -
Requirement(s):
zshWire the shared, framework-agnostic zsh env (
zsh/.zshrc.common) into~/.zshenvvia a single idempotentsourceline.This file holds env that both oh-my-zsh and zimfw users want regardless of framework: homebrew mirrors and
brew shellenv, nvm, cargo, and various download mirrors. It is sourced from~/.zshenv(not a framework rc) so it loads before~/.zshrc— the omz.zshrcgates plugins on whether tools likegit/tmuxare onPATH, which needsbrew shellenvto have run first.Run this once before
zsh_omzorzsh_zim. -
Requirement(s):
git,zshThis task will install
oh-my-zshfor you.The generated
~/.zshrcis oh-my-zsh's official template, left as-is (so it keeps tracking upstream), with onesourceline injected beforesource $ZSH/oh-my-zsh.sh: the version-controlledzsh/omz/.omzrc.common. It setsPATH, declares the core no-dependency plugins, and in turn sources~/.omzrc.local. All of this must run pre-init because oh-my-zsh reads thepluginsarray at init time — unlike zimfw, it has no separate build step.~/.omzrc.localis a git-ignored, per-machine opt-in switch file. Thezsh_omz_plugins_*tasks below appendplugins+=(...)lines to it, so a plugin (fzf, diff-so-fancy, z.lua) is enabled only on a machine where you actually ran its task — not merely because the underlying tool happens to be installed. This mirrors zimfw's~/.zimrc.local.What zsh plugins are used?
plugin require note colored-man-pages core, always on encode64 core, always on extract core, always on fzf task zsh_omz_plugins_fzf opt-in (switch file) sudo core, always on zsh_reload core, always on zsh-syntax-highlighting core, always on history-substring-search core, always on zsh-autosuggestions disabled in Emacs eshell. TIP: If your auto suggestion's color is same with your normal command's color, please make sure you $TERMsupport 256 color!z directory jumping git git auto (enabled when git present) gitfast git auto (enabled when git present) diff-so-fancy task zsh_omz_plugins_git_diff_so_fancy opt-in (switch file) git-extras task git_extras auto (enabled when git-extras present) tmux tmux auto (enabled when tmux present) z.lua task zsh_omz_plugins_zlua opt-in (switch file) osx OS X auto (enabled on macOS) So, maybe you should install some of them to make full use of zsh.
-
Requirement(s):
zsh, task zsh_omzAppend a prompt tweak (shows the current user, and host off macOS) to the end of
~/.zshrc. It runs post-init because the prompt relies on$fg_boldand the$PROMPTset up by oh-my-zsh, so it can't live in the pre-init~/.omzrc.local. Idempotent; edit or remove the block in~/.zshrcfreely. -
Requirement(s):
git,zsh, task zsh_omzInstall oh-my-zsh plugin
fzf -
Requirement(s):
git,zsh, task zsh_omzInstall oh-my-zsh plugin support for git diff-so-fancy
-
Requirement(s):
git,zsh,luaInstall zsh plugin
z.lua -
Requirement(s):
git,zshThis task will install
zimfwfor you.The generated
~/.zimrcis left as zimfw ships it (so it keeps tracking upstream). A singlesourceline is appended to it that loads the version-controlledzsh/zimfw/.zimrc.common, which declares the shared, no-dependency modules and then sources~/.zimrc.local.~/.zimrc.localis a git-ignored, per-machine switch file. Thezsh_zim_plugins_*tasks below write their enable lines into it, so a plugin is only active on a machine where you actually ran its task — even if the underlying tool is installed for other reasons. Put any other personal config there too. -
Requirement(s):
git,zsh,curlInstall oh-my-zsh plugin
fzffor zim. -
Requirement(s):
git,zsh, task zsh_zimInstall zimfw plugin support for git diff-so-fancy
-
Requirement(s):
git,zsh,tmuxIinstall the tmux plugin(
oh-my-zsh/plugins/tmux) included in oh-my-zsh for zimfw. -
Requirement(s):
git,zshInstall zsh prompt theme pure for zimfw
-
Requirement(s):
git,zsh,luaInstall zsh plugin
z.luafor zimfw
The MIT License (MIT)
Copyright (c) 2013 - present ik0r i@ik0r.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.