/budimanjojo-dotfiles

My dotfiles are here, you can install it using the provided ansible playbooks or using the install script.

Primary LanguageShellThe UnlicenseUnlicense

dotfiles

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.

Screenshots

Tmux

render1561745632013

Fish prompt (to be updated)

screenshot-2019-06-12_01-05-09

Vim

screenshot-2019-06-12_01-07-25

What Are Included

Fish

I use fisher as my plugin manager and use these plugins:

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:

Coc.nvim will have these extensions inside:

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.

Dependencies

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

Fonts

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.

Installation

Git clone this repository into your host machine: git clone https://github.com/budimanjojo/dotfiles.git Run install.sh: ./install.sh

Updating

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.

Cheatsheet

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

Customization

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 file
  • Alt+a,Alt+r to re source your tmux You can also add Tmux plugins into your .tmux.conf.local file normally.

To do

  • Better way to use custom configs
  • Use separate files instead of one vimrc
  • Create ansible role to automate everything