1
0
mirror of https://github.com/frebib/dotfiles.git synced 2024-06-14 12:57:23 +00:00
dotfiles/.config/vim/vimrc

261 lines
6.2 KiB
VimL
Raw Normal View History

2016-03-31 02:03:55 +00:00
set nocompatible " be iMproved, required
2017-11-23 19:15:43 +00:00
" Reconfigure Vim to be clean!
set rtp+=~/.config/vim
set directory=.,~/.config/vim
set viminfo+=n~/.config/vim/viminfo
2017-11-26 00:57:47 +00:00
set directory=$HOME/.config/vim/swapfiles//
2017-11-23 19:15:43 +00:00
2016-04-01 11:45:17 +00:00
syntax enable
filetype plugin on
2017-11-26 00:57:47 +00:00
2016-04-01 11:45:17 +00:00
set tabstop=4
2016-11-14 14:06:52 +00:00
set shiftwidth=0 " Use tabstop
set softtabstop=-1 " Use tabstop
2016-04-01 11:45:17 +00:00
set expandtab
set smarttab
set smartindent
2016-04-01 11:45:17 +00:00
set number
2017-11-15 23:49:37 +00:00
set linebreak
2016-04-01 11:45:17 +00:00
set autoindent
2018-03-31 12:44:42 +00:00
set breakindent
2016-04-01 11:45:17 +00:00
set laststatus=2
set encoding=utf-8
2016-04-01 16:39:00 +00:00
set background=dark
2017-11-23 19:15:43 +00:00
set omnifunc=syntaxcomplete#Complete
set title
set clipboard=unnamed
set wildmenu
set report=0
set lazyredraw
set ttyfast
set autoread
set showmatch
set scrolloff=6
set nojoinspaces
set updatetime=500 " reduce delay from 4s default
2018-03-31 20:50:50 +00:00
" te seems like the correct shorthand, not tabe
cmap te tabedit
let mapleader="\<space>"
2017-11-26 00:57:47 +00:00
" Autosave settings
function! SaveIfExist()
if @% != "" && filereadable(@%) && !&readonly
2018-03-29 11:15:20 +00:00
write
endif
endfunction
2017-11-26 00:57:47 +00:00
set autowrite
autocmd CursorHold,CursorHoldI,InsertLeave,FocusLost * call SaveIfExist()
2017-07-15 12:36:22 +00:00
2017-09-29 11:54:19 +00:00
" Search options
set hlsearch
set ignorecase
set smartcase
2016-05-16 16:43:27 +00:00
" GVim settings
set guifont=Sauce\ Code\ Pro\ 10.5
set guioptions=
2016-04-01 11:45:17 +00:00
2017-11-10 12:43:29 +00:00
" Whitespace highlight settings
set list
set listchars=eol:$,space:.,tab:>-,trail:~,extends:>,precedes:<
2018-03-29 10:54:40 +00:00
highlight SpecialKey ctermfg=8
2017-11-10 12:43:29 +00:00
if exists('+colorcolumn')
highlight ColorColumn ctermbg=8
autocmd filetype c,h,cpp,hpp set colorcolumn=81
autocmd filetype c,h,cpp,hpp match ErrorMsg '\%>80v.\+'
endif
2017-11-26 00:57:47 +00:00
2016-03-31 02:03:55 +00:00
" set the runtime path to include Vundle and initialize
2017-11-23 19:15:43 +00:00
set rtp+=~/.config/vim/bundle/Vundle.vim
2016-03-31 02:03:55 +00:00
call vundle#begin()
2017-11-23 19:15:43 +00:00
call vundle#rc('~/.config/vim/bundle')
2016-03-31 02:03:55 +00:00
Plugin 'VundleVim/Vundle.vim'
Plugin 'Valloric/YouCompleteMe'
Plugin 'scrooloose/syntastic'
Plugin 'scrooloose/nerdtree'
Plugin 'tpope/vim-sensible'
Plugin 'tpope/vim-fugitive'
Plugin 'tpope/vim-rhubarb'
Plugin 'tpope/vim-abolish'
2018-03-30 09:52:23 +00:00
Plugin 'tpope/vim-surround'
Plugin 'tpope/vim-repeat'
Plugin 'tpope/vim-commentary'
Plugin 'majutsushi/tagbar'
Plugin 'airblade/vim-gitgutter'
2016-04-01 15:19:20 +00:00
Plugin 'ryanoasis/vim-devicons'
2016-03-31 02:03:55 +00:00
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'chr4/nginx.vim'
Plugin 'PotatoesMaster/i3-vim-syntax'
Plugin 'lervag/vimtex'
Plugin 'JamshedVesuna/vim-markdown-preview'
Plugin 'junegunn/fzf.vim'
2016-03-31 02:03:55 +00:00
call vundle#end()
" Change to dvorak-mapped keys
let g:use_dvorak = 1
2016-10-04 08:50:16 +00:00
" YouCompleteMe config
let g:ycm_confirm_extra_conf = 0
if !exists('g:ycm_semantic_triggers')
let g:ycm_semantic_triggers = {}
endif
let g:ycm_semantic_triggers.tex = g:vimtex#re#youcompleteme
"let g:vimtex_view_method='zathura'
let g:tex_flavor='latex'
autocmd FileType tex silent VimtexCompile
autocmd FileType tex setlocal spell
autocmd FileType tex TagbarOpen
2016-04-01 11:45:17 +00:00
" Vim-Airline config
let g:Powerline_symbols = 'fancy'
let g:airline_powerline_fonts = 1
2016-04-01 16:39:00 +00:00
let g:airline_theme='solarized'
let g:airline#extensions#tabline#enabled = 1
" vim-markdown plugin
let vim_markdown_preview_toggle=0
let vim_markdown_preview_browser='Chromium'
let vim_markdown_preview_use_xdg_open=1
let vim_markdown_preview_github=1
" Syntastic configuration
let g:syntastic_enable_highlighting = 1
let g:syntastic_enable_signs=1
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
" Tagbar configuration
let g:tagbar_width = 50
let g:tagbar_compact = 1
let g:tagbar_show_linenumbers = 1
let g:tagbar_singleclick = 1
let g:tagbar_autopreview = 1
2017-11-26 00:57:47 +00:00
" NERDTree configuration
map <leader><space> :NERDTreeToggle<CR>
" FZF configurationn
map <leader><tab> :Files<CR>
2017-11-26 00:57:47 +00:00
" Disable mouse
set mouse=nicr
nnoremap <LeftMouse> <nop>
nnoremap <RightMouse> <nop>
2018-03-14 02:08:51 +00:00
" Remap completion
inoremap <C-Space> <C-x><C-o>
inoremap <C-@> <C-Space>
2016-10-12 14:03:09 +00:00
" Unbind arrow keys
for prefix in ['n', 'v']
2016-10-12 14:03:09 +00:00
for key in ['<Up>', '<Down>', '<Left>', '<Right>']
exe prefix . "noremap " . key . " <Nop>"
endfor
endfor
" Source: https://github.com/ChrisLane/dotfiles/blob/1f5efd44e1b78224568645eaec2e6e243959c0a9/.vimrc#L66
" Remove whitespace at end of lines with F5
:nnoremap <silent> <F5> :let _s=@/ <Bar> :%s/\s\+$//e <Bar> :let @/=_s <Bar> :nohl <Bar> :unlet _s <CR>
" Dvorak Hackery
" Source: https://github.com/sporkbox/vimrc/blob/master/vimrc
if (exists("g:use_dvorak") && g:use_dvorak == 1)
" I use a Dvorak keyboard, so standard vim movement keys are a hassle.
" Since mnemonics are helpful all around, I need a mapping that gives me
" pain-free file navigation without screwing up mnemonics (too much).
"
" Thus:
" (D)elete is now (K)ill: d2w == k2w "kill 2 words"
" Un(T)il is now (J)ump-To: dt( == kj( "kill, jump-to paren"
" (N)ext is now (L)eap: cn == cl "change up to leap point"
" Standard movement, which is the true focus of this hack.
" Mnemonics are awesome, so let's preserve as much as possible.
noremap d h
noremap h j
noremap t k
noremap n l
noremap D H
noremap H J
noremap T K
noremap N L
noremap gh gj
noremap gt gk
" I work with tabs every now and then. No, I don't have a mnemonic, so
" stfu.
noremap gj gt
noremap gJ gT
" Window movement, equally important
noremap <C-w>d <C-w>h
noremap <C-w>h <C-w>j
noremap <C-w>t <C-w>k
noremap <C-w>n <C-w>l
nnoremap <C-w><C-d> <C-w><C-h>
nnoremap <C-w><C-h> <C-w><C-j>
nnoremap <C-w><C-t> <C-w><C-k>
nnoremap <C-w><C-n> <C-w><C-l>
nnoremap <C-d> <C-w>h
nnoremap <C-h> <C-w>j
nnoremap <C-t> <C-w>k
nnoremap <C-n> <C-w>l
" Account for tag jumping
nnoremap <C-j> <C-t>
" Remappings for the D key
noremap k d
noremap K D
" Remappings for the T key
noremap j t
2017-11-26 00:57:47 +00:00
"noremap J T
" Remapping for the L key
noremap l n
noremap L N
" General purpose help; the originals remain for convenience
noremap - 0
noremap _ $
" Fold-related keybindings
noremap zh zj
noremap zt zk
" Disable some default vimtex mappings that conflict with rebound keys
let g:vimtex_mappings_disable = {
\ 'n': ['tse', 'tsd', 'tsD', 'tsc', 'dse', 'dsc', 'ds$', 'dsd'],
\ 'x': ['tsd', 'tsD'],
\}
let NERDTreeMapOpenInTab='\t'
endif
2016-03-31 02:03:55 +00:00
2016-05-16 16:46:22 +00:00
" Save aliases.
noremap <Leader>q :wq<CR>
com! W w
com! Q q
com! Wq wq
com! WQ wq
2016-03-31 02:03:55 +00:00
" Write with sudo
cmap w!! w !sudo tee > /dev/null %
autocmd FileType markdown setlocal ts=2 sts=2 sw=2 et
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 et