This is my .vimrc as I first wrote it at the beginning of October 2017.
syntax on
filetype indent plugin on
"
" Package management (vim-plug)
"
call plug#begin('~/.vim/plugged')
Plug 'airblade/vim-gitgutter'
Plug 'ap/vim-buftabline'
Plug 'joshdick/onedark.vim'
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug 'junegunn/fzf.vim'
Plug 'kudabux/vim-srcery-drk'
" Plug 'shawncplus/phpcomplete.vim'
Plug 't9md/vim-choosewin'
" Plug 'Valloric/YouCompleteMe'
Plug 'vim-airline/vim-airline'
Plug 'w0rp/ale'
call plug#end()
"
" Basics
"
" Colour scheme
colorscheme srcery-drk
" set background=dark " Comment this out for some schemes
" Editor
set number " Show line numbers
set ruler " Show the ruler
" Splits
" Note: Check the leader key shortcuts below for some commands that might
" conflict with these if you need to change these around...
set splitright " Make vertical splits appear to the right
set splitbelow " Make horizontal splits appear to the bottom
" Search
set hlsearch " Highlight searched pattern
set ignorecase " Ignore case when pattern searching
set incsearch " Refine search as each character is typed
" Backspace
set backspace=2 " Make backspace delete past where insert mode began
" Tab completion
set wildmode=longest,list,full
set wildmenu
" Indentation
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab " Expand tabs into several spaces
set smarttab " Tab to implied indentation depth automatically (I think?)
set nowrap " Don't wrap text
"
" Filetype-specific settings
"
autocmd Filetype html set wrap
autocmd Filetype log set wrap
"
" Key mapping
"
" Leader key
" let mapleader = "\<space>"
" Insert mode
imap jk <Esc>
imap kj <Esc>
" Visual-select mode
vmap <leader>y "+y
" Normal mode
nmap <leader>f :FZF<cr>
nmap <leader>a :Ag!<cr>
nmap <leader>s :Lines!<cr>
nmap <leader>d :BLines<cr>
nmap <leader>b :Buffers<cr>
nmap <leader>m :Marks<cr>
nmap <leader>g :GFiles?<cr>
" Clear search pattern
nmap <leader><cr> :nohl<cr>
" Buffers
nmap <leader>w :w<cr>
nmap <leader>q :bd<cr>
nmap <leader><Esc> :bd!<cr>
nmap <leader><BS><BS> :bufdo bd<cr>
nmap <leader><BS><BS><BS> :bufdo bd!<cr>
nmap <leader>1 <Plug>BufTabLine.Go(1)
nmap <leader>2 <Plug>BufTabLine.Go(2)
nmap <leader>3 <Plug>BufTabLine.Go(3)
nmap <leader>4 <Plug>BufTabLine.Go(4)
nmap <leader>5 <Plug>BufTabLine.Go(5)
nmap <leader>6 <Plug>BufTabLine.Go(6)
nmap <leader>7 <Plug>BufTabLine.Go(7)
nmap <leader>8 <Plug>BufTabLine.Go(8)
nmap <leader>9 <Plug>BufTabLine.Go(9)
nmap <leader>0 <Plug>BufTabLine.Go(0)
" Sessions
nmap <leader>,,, :mksession! ~/.vim/sessions/default<cr>
nmap <leader>... :source ~/.vim/sessions/default<cr>
nmap <leader>,, :mksession! ~/.vim/sessions/
nmap <leader>.. :source ~/.vim/sessions/
" Windows
nmap <leader>/ <Plug>(choosewin)
nmap <leader><right><right> :set splitright<cr> :vsplit<cr>
nmap <leader><down><down> :set splitbelow<cr> :split<cr>
nmap <leader><left><left> :set splitright&<cr> :vsplit<cr> :set splitright<cr>
nmap <leader><up><up> :set splitbelow&<cr> :split<cr> :set splitbelow<cr>
"
" ap/vim-buftabline
"
let g:buftabline_show = 2 " Always show
let g:buftabline_numbers = 2 " Ordinal from left-to-right
"
" junegunn/fzf
"
let g:fzf_layout = {
\ 'down': '~40%'
\ }
let g:fzf_colors = {
\ 'fg': ['fg', 'Normal'],
\ 'bg': ['bg', 'Normal'],
\ 'hl': ['fg', 'Comment'],
\ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'],
\ 'bg+': ['bg', 'CursorLine', 'CursorColumn'],
\ 'hl+': ['fg', 'Statement'],
\ 'info': ['fg', 'PreProc'],
\ 'border': ['fg', 'Ignore'],
\ 'prompt': ['fg', 'Conditional'],
\ 'pointer': ['fg', 'Exception'],
\ 'marker': ['fg', 'Keyword'],
\ 'spinner': ['fg', 'Label'],
\ 'header': ['fg', 'Comment']
\ }
"
" shauncplus/phpcomplete.vim
"
let g:phpcomplete_mappings = {
\ 'jump_to_def': '<leader>z',
\ }
"
" Valloric/YouCompleteMe
"
highlight Pmenu ctermfg=10 ctermbg=8
"
" vim-airline/vim-airline
"
let g:airline#extensions#tabline#enabled = 1
let g:airline_powerline_fonts = 1
let g:airline_theme = 'onedark'
let g:airline#extensions#tabline#buffer_nr_show = 1
"
" w0rg/ale
"
" General
let g:ale_completion_enabled = 1
let g:ale_lint_on_text_changed = 1
let g:ale_set_highlights = 1
" phpcs
let g:ale_php_phpcs_executable = './bin/phpcs'
let g:ale_php_phpcs_standard = "psr4"
let g:ale_php_phpmd_ruleset = 'cleancode,codesize,controversial,design,unusedcode'
"
" netrw
"
let g:netrw_banner = 0
let g:netrw_liststyle = 3
let g:netrw_browse_split = 2
let g:netrw_altv = 0
let g:netrw_winsize = 20
"
" Functions
"
" Clear every register.
function! ClearRegisters()
let regs='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/-="*+'
let i=0
while (i<strlen(regs))
exec 'let @'.regs[i].'=""'
let i=i+1
endwhile
endfunction
command! ClearRegisters call ClearRegisters()