tmux+nvim

" __ ____ __ _ ___ _____ __ __ ____ ____
" | \/ \ \ / / | \ | \ \ / /_ _| \/ | _ \ / ___|
" | |\/| |\ V / | \| |\ \ / / | || |\/| | |_) | |
" | | | | | | | |\ | \ V / | || | | | _ <| |___
" |_| |_| |_| |_| \_| \_/ |___|_| |_|_| \_\\____|
" ===
" === Auto load for first time uses
" ===
if empty(glob('~/.config/nvim/autoload/plug.vim'))
silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
" ===
" === Editor behavior
" ===
set number
set autoindent
set shiftwidth=4
set tabstop=4
set softtabstop=4
"set relativenumber
" ===
" === Basic Mappings
" ===
" Set <LEADER> as <SPACE>
let mapleader=" "
" Save & quit
noremap S :w<CR>
noremap Q :q<CR>
noremap ,q :q!<CR>
"noremap <C-q> :qa<CR>
inoremap kj <Esc>
" Open the vimrc file anytime
noremap <LEADER>rc :e ~/.config/nvim/init.vim<CR>
" Open Startify
"noremap <LEADER>st :Startify<CR>
" make Y to copy till the end of the line
nnoremap Y y$
" Copy to system clipboard
"vnoremap Y "+y
" Indentation
nnoremap < <<
nnoremap > >>
" Search
noremap <LEADER><CR> :nohlsearch<CR>
" Adjacent duplicate words
noremap <LEADER>dw /\(\<\w\+\>\)\_s*\1
"===coc.nivm===
set shortmess+=c
set updatetime=100
inoremap <silent><expr> <TAB>
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm()
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
" Space to Tab
"nnoremap <LEADER>tt :%s/ /\t/g
"vnoremap <LEADER>tt :s/ /\t/g
" Folding
"noremap <silent> <LEADER>o za
" Open up lazygit
"noremap \g :Git
"noremap <c-g> :tabe<CR>:-tabmove<CR>:term lazygit<CR>
" ===
" === Cursor Movement
" ===
" Cursor movement (the default arrow keys are used for resizing windows)
" ^
" k
" < h l >
" j
" v
" K/J keys for 5 times k/j (faster navigation)
noremap <silent> K 5k
noremap <silent> J 5j
" H key: go to the start of the line
noremap <silent> H 0
" L key: go to the end of the line
noremap <silent> L $
" Faster in-line navigation
noremap W 5w
noremap B 5b
" Ctrl + U or E will move up/down the view port without moving the cursor
" noremap <C-U> 5<C-y>
" noremap <C-E> 5<C-e>
" ===
" === Insert Mode Cursor Movement
" ===
inoremap <M-a> <ESC>A
inoremap <M-h> <Left>
inoremap <M-j> <Down>
inoremap <M-k> <Up>
inoremap <M-l> <Right>
" ===
" === Command Mode Cursor Movement
" ===
cnoremap <C-a> <Home>
cnoremap <C-e> <End>
cnoremap <C-p> <Up>
cnoremap <C-n> <Down>
cnoremap <C-b> <Left>
cnoremap <C-f> <Right>
"cnoremap <M-b> <S-Left>
"cnoremap <M-w> <S-Right>
" ===
" === Window management
" ===
" Use <space> + new arrow keys for moving the cursor around windows
"noremap <LEADER>w <C-w>w
noremap <LEADER>k <C-w>k
noremap <LEADER>j <C-w>j
noremap <LEADER>h <C-w>h
noremap <LEADER>l <C-w>l
" Disable the default s key
noremap s <Nop>
" Split the screens to up (horizontal), down (horizontal), left (vertical), right (vertical)
noremap sk :set nosplitbelow<CR>:split<CR>
noremap sj :set splitbelow<CR>:split<CR>
noremap sh :set nosplitright<CR>:vsplit<CR>
noremap sl :set splitright<CR>:vsplit<CR>
" Resize splits with arrow keys
noremap <up> :res +5<CR>
noremap <down> :res -5<CR>
noremap <left> :vertical resize-5<CR>
noremap <right> :vertical resize+5<CR>
" Place the two screens up and down
noremap sp <C-w>t<C-w>K
" Place the two screens side by side
noremap sv <C-w>t<C-w>H
" Rotate screens
noremap srp <C-w>b<C-w>K
noremap srv <C-w>b<C-w>H
" Press <SPACE> + q to close the window below the current window
noremap <Leader>q <C-w>j:q<CR>
" ===
" === Tab management
" ===
" Create a new tab with tn
noremap tn :tabnew<CR>
" Move around tabs with th and tl
noremap th :-tabnext<CR>
noremap tl :+tabnext<CR>
" Move the tabs with tmh and tml
noremap tmh :-tabmove<CR>
noremap tml :+tabmove<CR>
call plug#begin('~/.config/nvim/plugged')
" Pretty Dress
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'ajmwagar/vim-deus'
" Plug 'theniceboy/nvim-deus'
" UI Beautification
Plug 'mhinz/vim-startify'
"Plug 'ryanoasis/vim-devicons'
"Plug 'luochen1990/rainbow'
" Emoji
Plug 'junegunn/vim-emoji'
" Git
Plug 'airblade/vim-gitgutter'
" nerdtree
Plug 'scrooloose/nerdtree'
Plug 'altercation/vim-colors-solarized'
Plug 'w0ng/vim-hybrid'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'jiangmiao/auto-pairs'
call plug#end()
colorscheme deus