This repository contains all my dotfiles managed by chezmoi. Please note that this is just my own personal dotfiles. You can fork this repository and use your own zshrc and vimrc by replacing yours with mine and run the install script. In the future, maybe I will make this customizable for custom changes, but that's when I'm free and not guaranteed. I may not even look at this README again after setting up all my machines.
Tmux
Fish prompt (to be updated)
Vim
Fish
I use fisher as my plugin manager and use these plugins:
- Starship as the prompt theme
- FZF Fish as fzf for fish
- Puffer Fish as text expansion for fish
- kubectl as kubectl completions for fish
My shell colorscheme is set to base16-google-dark
using base16-shell
Vim
I use Vim-plug as my plugin manager and add these plugins:
- Vim-easy-align
- Vim-colorschemes
- Base16-vim
- Vim-airline
- Vim-airline-themes
- Nerdtree
- Nerdtree-git-plugin
- Tcomment
- Vim-fugitive
- Ale
- Coc.nvim
- Vim-snippets
- Fzf.vim
- indentLine
Coc.nvim will have these extensions inside:
- coc-json
- coc-snippets
- coc-pairs
- coc-highlight
- coc-tsserver
- coc-tslint
- coc-html
- coc-css
- coc-phpls
- coc-stylelint
- coc-vimlsp
- coc-yaml
- coc-emmet
Note: You need Vim version >=8.0 or Neovim version >=0.3.1 in order to use Coc.nvim
Tmux
My preferred prefix key is set to Alt+a
instead of the default Ctrl+b
.
You need to have these packages installed in your system if you want to set up:
For Fish:
zsh
git
fd
bat
chsh
curl/wget
For Vim:
vim/nvim
git
curl
nodejs
For Tmux:
tmux
Starship and Vim-airline requires powerline fonts to work. I suggest Nerd-fonts because that is what I'm using. The font in the screenshot above is using UbuntuMono Nerd Font Regular. Chezmoi to install will do this automatically for you.
Git clone this repository into your host machine:
git clone https://github.com/budimanjojo/dotfiles.git
Run install.sh:
./install.sh
Fish**
To update fish plugins, simply type in fisher update
in terminal.
Vim
To update Vim plugins, simply do :PlugUpdate
in your vim. For Coc extensions, you don't have to do anything. It will update by itself when you launch vim.
Vim
The prefix key is Space
. You can override this using your custom .vimrc.local
file. <Leader>
means you need to press prefix key first. If they are not in the table, that means it is using the default Vim keybindings.
Mode | Vim Keypress | Description |
Normal | <leader> w |
Save file |
Normal | <leader> x |
Save file and quit vim |
Normal | <leader> q |
Quit vim |
Normal | <leader> qa |
Force quit vim without saving file |
Normal | <leader> wq |
Save file and quit vim |
Normal | Y |
Yank from cursor to the end of file |
Insert | ii |
Exit Insert mode |
Normal | K |
Move Up one paragraph |
Normal | J |
Move Down one paragraph |
Normal | H |
Move to the first character in line |
Normal | L |
Move to the last character in line |
Normal | Control+k |
Move to the split window above |
Normal | Control+j |
Move to the split window below |
Normal | Control+h |
Move to the left split window |
Normal | Control+l |
Move to the right split window |
Normal | <leader> s |
Open new horizontal split window |
Normal | <leader> v |
Open new vertical split window |
Insert | Control+k |
Move cursor Up |
Insert | Control+j |
Move cursor Down |
Insert | Control+h |
Move cursor Left |
Insert | Control+l |
Move cursor Right |
Normal | <leader> tn |
Open new tab |
Normal | <leader> td |
Close tab |
Normal | <leader> th |
Go to previous tab |
Normal | <leader> tl |
Go to next tab |
Normal | <leader> te |
Open new tab with current buffer's path |
Normal/Visual | Tab |
Indent current line or selection |
Normal/Visual | Shift+Tab |
De-indent current line or selection |
Normal | <leader> h |
Toggle search highlight on/off |
Normal | F5 |
Strip whitespaces in file |
Normal/Visual | ga |
Align text with EasyAlign |
All | Control+n |
Toggle NERDTree File Manager |
Normal | <leader> k |
Go to previous syntax error with ALE |
Normal | <leader> j |
Go to next syntax error with ALE |
Normal | <leader> ci |
Show diagnostic message using COC.nvim |
Normal | <leader> jn |
Jump to next diagnostic position using COC.nvim |
Normal | <leader> jp |
Jump to previous diagnostic position using COC.nvim |
Normal | <leader> jd |
Jump to definition using COC.nvim |
Normal | <leader> jc |
Jump to declaration using COC.nvim |
Normal | <leader> ji |
Jump to implementation using COC.nvim |
Normal | <leader> jt |
Jump to type definition using COC.nvim |
Normal | <leader> jr |
Jump to reference using COC.nvim |
Normal/Visual | <leader> cf |
Format range of word of selection using COC.nvim |
Normal | <leader> cr |
Rename symbol using COC.nvim |
Normal | <leader> cl |
Open current link using COC.nvim |
Insert | Alt+n |
Jump to next snippet placeholder using COC Snippets |
Insert | Alt+p |
Jump to previous snippet placeholder using COC Snippets |
Normal | <leader> ff |
Fuzzy file search using FZF |
Normal | <leader> fb |
Fuzzy buffer search using FZF |
Normal | <leader> fw |
Fuzzy window search using FZF |
Normal | <leader> fl |
Fuzzy line search using FZF |
Normal | <leader> fh |
Fuzzy history search using FZF |
Tmux
I override the default keybindings for Tmux to be more reasonable. Prefix key is Alt+a
for local session and Alt+z
for nested session. You can of course override this using your custom .tmux.conf.local
file. <prefix>
means you need to press prefix key first, <repeat>
means you don't need to press prefix key again after triggering it within repeat-time
set (default set to 1 second), <copy-mode>
means you must be in copy-mode first. The table below lists all the keybindings set. If they are not in the table, that means it is using the default Tmux keybindings.
Tmux Keypress | Description |
<prefix> Alt+e |
Edit tmux.conf.local file and reload configuration after saving |
<prefix> Alt+r |
Reload tmux configuration |
<prefix> f |
Find session, window, pane from a list |
<prefix> Alt+s |
Make new horizontal split window |
<prefix> Alt+v |
Make new vertical split window |
<prefix> r |
Rename current window |
<prefix> R |
Rename current session |
<prefix> <repeat> h |
Move selection to left pane |
<prefix> <repeat> j |
Move selection to pane below |
<prefix> <repeat> k |
Move selection to pane above |
<prefix> <repeat> l |
Move selection to right pane |
<prefix> <repeat> > |
Swap to the next pane |
<prefix> <repeat> < |
Swap to the previous pane |
<prefix> <repeat> H |
Resize current pane to the left |
<prefix> <repeat> J |
Resize current pane downwards |
<prefix> <repeat> K |
Resize current pane upwards |
<prefix> <repeat> L |
Resize current pane to the right |
<prefix> <repeat> Alt+n |
Move selection to the next window |
<prefix> <repeat> Alt+p |
Move selection to the previous window |
<prefix> <repeat> Tab |
Move selection to the next window |
<prefix> S |
Join current pane to selected window in horizontal split |
<prefix> V |
Join current pane to selected window in vertical split |
<prefix> x |
Close current pane |
<prefix> X |
Close current window |
<prefix> Alt+x |
Close all other window window |
<prefix> a |
Go into copy mode |
<prefix> p |
Paste copied text from the last buffer |
<prefix> P |
Choose buffer to paste from list |
<copy-mode> y |
Copy selected text |
<copy-mode> Y |
Copy the whole line of selected text |
<copy-mode> D |
Copy untile the end of line from the selected text |
Fish
To install or remove fish plugins, you can just run fisher
command.
To change the included base16-google-dark
colorscheme, you can type base16
followed by a tab to perform tab completion.
Vim
You can create a new file in your $HOME
folder call .vimrc.local
and put in what you want to override in that file.
Tmux
You can simply create a new file in your $HOME
folder call .tmux.conf.local
and put in what you want to override in that file. After that, source that file in tmux and you are done. You can do it with this keybindings:
Alt+a,Alt+e
to edit tmux.conf.local fileAlt+a,Alt+r
to re source your tmux You can also add Tmux plugins into your .tmux.conf.local file normally.
- Better way to use custom configs
- Use separate files instead of one vimrc
- Create ansible role to automate everything