Skip to content

Instantly share code, notes, and snippets.

@ahmadkarlam
Last active May 12, 2023 02:12
Show Gist options
  • Save ahmadkarlam/44a5c091168b2a70fd0a to your computer and use it in GitHub Desktop.
Save ahmadkarlam/44a5c091168b2a70fd0a to your computer and use it in GitHub Desktop.
My vimrc
call plug#begin()
" Put your plugin here.
Plug 'scwood/vim-hybrid'
Plug 'scrooloose/nerdtree'
Plug 'kien/ctrlp.vim'
Plug 'jwalton512/vim-blade'
Plug 'StanAngeloff/php.vim'
Plug 'Valloric/MatchTagAlways'
Plug 'Yggdroot/indentLine'
Plug 'powerline/powerline', { 'rtp' : 'powerline/bindings/vim/' }
Plug 'vim-scripts/bash-support.vim'
Plug 'editorconfig/editorconfig-vim'
Plug 'roosta/srcery'
Plug 'editorconfig/editorconfig-vim'
Plug 'dracula/vim'
Plug 'rking/ag.vim'
Plug 'skwp/greplace.vim'
Plug 'tpope/vim-surround'
Plug 'fatih/vim-go', { 'do': ':GoInstallBinaries' }
Plug 'sebdah/vim-delve'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'airblade/vim-gitgutter'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
Plug 'zivyangll/git-blame.vim'
Plug 'easymotion/vim-easymotion'
call plug#end()
" Style UI
set t_Co=256
set background=dark
" colorscheme srcery
" My Setting
set linespace=20
set nowrap
set tabstop=4
set softtabstop=4
set expandtab
set noswapfile
set autoindent
set shiftwidth=4
set autowrite
set showcmd
set mouse=a
set noshowmode
set complete=.,w,b,u
set backspace=indent,eol,start " backspace over everything in insert mode
set relativenumber
set wildmenu
set cc=120
set splitbelow
set splitright
" Setting powerline
set rtp+=/home/ahmad/.local/lib/python2.7/site-packages/powerline/bindings/vim
set laststatus=2 " always show statusbar
set statusline=
set statusline+=%-10.3n\ " buffer number
set statusline+=%f\ " filename
set statusline+=%h%m%r%w " status flags
set statusline+=\[%{strlen(&ft)?&ft:'none'}] " file type
set statusline+=%= " right align remainder
set statusline+=%-14(%l,%c%V%) " line, character
set statusline+=%<%P " file position
" With a map leader it's possible to do extra key combinations
" " like <leader>w saves the current file
let mapleader = ","
let g:mapleader = ","
" New mapping key
nmap <leader>w :w!<cr>
nmap <leader>q :q<cr>
imap jj <esc>
" remap key
nnoremap <Leader>z :bp<CR>
nnoremap <Leader>c :bn<CR>
nnoremap <Leader>x :bd<CR>
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>
" Setting NerdTree
map <C-e> :NERDTreeToggle<CR>
autocmd vimenter * NERDTree
" Setting Ctrl+P
let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlP'
map <Leader>p :CtrlPBuffer<CR>
map <C-r> :CtrlPBufTag<CR>
set wildignore+=*/tmp/*,*.so,*.swp,*.zip,node_modules
" Setting Greplace
set grepprg=ag
let g:grep_cmd_opts = '--line-numbers --noheading'
"Sort PHP use statements
""http://stackoverflow.com/questions/11531073/how-do-you-sort-a-range-of-lines-by-length
vmap <Leader>su ! awk '{ print length(), $0 \| "sort -n \| cut -d\\ -f2-" }'<cr>
" COC
set hidden
" Some servers have issues with backup files, see #649.
set nobackup
set nowritebackup
" Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable
" delays and poor user experience.
set updatetime=50
" Give more space for displaying messages.
set cmdheight=2
" Always show the signcolumn, otherwise it would shift the text each time
" " diagnostics appear/become resolved.
if has("patch-8.1.1564")
" Recently vim can merge signcolumn and number column into one
set signcolumn=number
else
set signcolumn=yes
endif
" Use <c-space> to trigger completion.
inoremap <silent><expr> <c-space> coc#refresh()
" GoTo code navigation.
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
" Use tab for trigger completion with characters ahead and navigate.
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
" other plugin before putting this into your config.
inoremap <silent><expr> <TAB>
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
" Make <CR> to accept selected completion item or notify coc.nvim to format
" " <C-g>u breaks current undo, please make your own choice.
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
" Golang
let g:go_fmt_command = "goimports"
let g:syntastic_go_checkers = ['govet', 'errcheck', 'go']
" Go Debug
nnoremap <Leader>s :DlvDebug<CR>
" nnoremap <Leader>a :GoDebugStop<CR>
nnoremap <Leader>d :DlvToggleBreakpoint<CR>
nnoremap <Leader>f :DlvToggleTracepoint<CR>
" Easymotion
let g:EasyMotion_do_mapping = 0 " Disable default mappings
" `s{char}{char}{label}`
" Need one more keystroke, but on average, it may be more comfortable.
nmap s <Plug>(easymotion-overwin-f2)
" Turn on case-insensitive feature
let g:EasyMotion_smartcase = 1
" JK motions: Line motions
map <Leader>j <Plug>(easymotion-j)
map <Leader>k <Plug>(easymotion-k)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment