vimrc
vimrc

TODO

Use sh script to initialize automatically

In this article I will introduce:

  • Backup and share your Linux config, known as dotfiles on GitHub.
  • Initialize terminal with zsh and vim with dotfiles.

1. dotfiles

Basically speaking, Linux config files are start with ., like .zshrc for oh-my-zsh and .vim for vim.

People share their customized config on GitHub http://dotfiles.github.io/. You can easily get and learn how others setup their OS and softwares.

http://dotfiles.github.io/
http://dotfiles.github.io/

You can also backup and sync through GitHub, as easily as create a repo and upload your dotfiles into it, Here is mine pin-dotfiles.

Warning

You shouldn’t upload your files with secrets like passwords or other sensitive information to a public repo!

pin dotfiles
pin dotfiles

2. Initialize terminal with dotfiles

It is intelligent to use sh scripts to do duplicated jobs like initialization every time you hand on a new system. But, today let’s manually download dotfiles and make things work.

Before it, think about what softwares you mostly use to dev. It’s safe to say shell and vim. Here, I’ll use my dotfiles to demonstarte. And I’ll introduce what I customized in 3. My zsh and zsh customization.

2.1 Install vim and zsh

Vim is usually installed with the system. Run vi to check. If not, I suggest install neovim instead, which is a reconstructed vim and compatibale with vim configurations.

cat /etc/shells to check whether zsh is installed. If not, find how in zsh wiki.

oh-my-zsh is a framework to help manage zsh configuration.

# install zsh on Ubuntu
apt install zsh
# change current shell to zsh
chsh -s $(which zsh)

# install oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

2.2 Plant dotfiles

# prepare dotfiles
git clone https://github.com/pinchenjohnny/pin-dotfiles.git
cd pin-dotfiles
cp -t ~/ .vim .zshrc

zsh-autosuggestions is a commands prompt based on input history.

autojump: jump to visted directory arbitrarily using command j <visited dir>.

# make zsh work

cd ~

# install zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

# install autojump
git clone git://github.com/wting/autojump.git
cd autojump
python ./install.py

cd ~
# REMEMBER to change /home/pinchen to your home dir in .zshrc

source .zshrc

vim-plug is a vim plugins manager.

# make vim work
# for neovim, this is slightly different
# check neovim github for details

cd ~

# install vim-plug
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

cd ~/.vim
vi vimrc

To install vim plugins via vim-plug, in vim command line mode of vimrc, input PlugInstall.

3. My zsh and zsh customization

In this part, I’ll simply introduce features of my customization and some frequently used operations. Check .zshrc and .vim/vimrc for more information.

3.1 zsh

Double hit Esc to add sudo to current command.

Alias like:

alias la='ls -a'
alias ll='ls -al'
alias gc='git clone'
alias ga='git add -A'
alias gcm='git commit -m'
alias gp='git push'

Use j <visited dir> to jump to visited dir from anywhere.

3.2 vim

I adjust my vim config from theniceboy/.vim. Go and check his if you are a colemak
keyboard layout user.

My vim leader key is Space.

Some key maps:

" Save & quit
map Q :q<CR>
map W :w<CR>
map <LEADER>q :q!<CR>
map <LEADER>w :w !sudo tee %<CR>

" Search
map <LEADER><CR> :nohlsearch<CR>
noremap = nzz
noremap - Nzz

" Cursor Movement
noremap J 5j
noremap K 5k
noremap H 5b
noremap L 5w
noremap <C-h> 0
noremap <C-l> $