212 lines
5.0 KiB
VimL
212 lines
5.0 KiB
VimL
" Required settings
|
|
set nocompatible
|
|
filetype off
|
|
|
|
set rtp+=~/.vim/bundle/Vundle.vim
|
|
set rtp+=/opt/homebrew/opt/fzf
|
|
|
|
call vundle#begin()
|
|
|
|
" let Vundle manage Vundle, required
|
|
Plugin 'VundleVim/Vundle.vim'
|
|
|
|
" Plugins
|
|
Plugin 'preservim/nerdtree'
|
|
Plugin 'tpope/vim-fugitive'
|
|
Plugin 'tpope/vim-surround'
|
|
Plugin 'tpope/vim-commentary'
|
|
Plugin 'ryanoasis/vim-devicons'
|
|
Plugin 'vim-airline/vim-airline'
|
|
Plugin 'vim-syntastic/syntastic'
|
|
|
|
" All of your Plugins must be added before the following line
|
|
call vundle#end()
|
|
filetype plugin indent on
|
|
|
|
" Search options
|
|
set incsearch
|
|
set ignorecase
|
|
set showmatch
|
|
set hlsearch
|
|
|
|
" History options
|
|
set history=1000
|
|
set showcmd
|
|
|
|
" Indent options
|
|
set autoindent
|
|
set smartindent
|
|
|
|
" Common options
|
|
set guioptions=
|
|
set showmode
|
|
set showtabline=0
|
|
set smartcase
|
|
set number
|
|
set ruler
|
|
set wrap linebreak nolist
|
|
set cursorline
|
|
autocmd FileType text,markdown setlocal textwidth=80
|
|
|
|
" Force 256 color support
|
|
set t_Co=256
|
|
|
|
" Enable syntax highlighting
|
|
syntax on
|
|
|
|
" Set syntax highlight for specified file types
|
|
autocmd BufRead,BufNewFile *.conf setf dosini
|
|
autocmd BufRead,BufNewFile *.cnf setf dosini
|
|
|
|
" Set tab sizes and use spaces instead of tabs
|
|
set tabstop=2
|
|
set shiftwidth=2
|
|
set softtabstop=2
|
|
set expandtab
|
|
set smarttab
|
|
|
|
" Encoding and file format order
|
|
set ffs=unix,dos,mac
|
|
set fencs=utf-8,cp1251,koi8-r,ucs-2,cp866
|
|
|
|
" Disable mouse support in terminal mode
|
|
if !has('gui_running')
|
|
set mouse=
|
|
endif
|
|
|
|
" Fix keyboard mapping for <home> and <end> buttons
|
|
map <ESC>[H <home>
|
|
cmap <ESC>[H <home>
|
|
imap <ESC>[H <home>
|
|
map <ESC>[F <end>
|
|
cmap <ESC>[F <end>
|
|
imap <ESC>[F <end>
|
|
|
|
" Save and exit in Insert and Normal mode
|
|
inoremap <F2> <ESC>:wq
|
|
nnoremap <F2> <ESC>:wq
|
|
|
|
" Toggle NERDTree open and close in Normal mode
|
|
nnoremap <F3> :NERDTreeToggle<CR>
|
|
|
|
" Have nerdtree ignore certain files and directories.
|
|
let NERDTreeIgnore=['\.git$', '\.jpg$', '\.mp4$', '\.ogg$', '\.iso$', '\.pdf$', '\.pyc$', '\.odt$', '\.png$', '\.gif$', '\.db$']
|
|
|
|
" Map <Ctrl+/> to comment line in Normal, Visual and Insert modes.
|
|
nmap <C-_> <Plug>CommentaryLine
|
|
vmap <C-_> <Plug>CommentaryLine
|
|
imap <C-_> <C-\><C-O><Plug>CommentaryLine
|
|
|
|
" Map (Ctrl+u) to undo the changes made since you typed in Insert mode.
|
|
" Start a new change before using this mapping. Normally Ctrl+u while in Insert mode
|
|
" would delete the text without undo history and it would be lost forever.
|
|
inoremap <C-u> <C-G>u<C-u>
|
|
|
|
" You can split the window in Vim by typing :split or :vsplit.
|
|
" Navigate the split view easier by pressing CTRL+j, CTRL+k, CTRL+h, or CTRL+l.
|
|
nnoremap <c-j> <c-w>j
|
|
nnoremap <c-k> <c-w>k
|
|
nnoremap <c-h> <c-w>h
|
|
nnoremap <c-l> <c-w>l
|
|
|
|
" Resize split windows using arrow keys by pressing:
|
|
" CTRL+UP, CTRL+DOWN, CTRL+LEFT, or CTRL+RIGHT.
|
|
noremap <c-up> <c-w>+
|
|
noremap <c-down> <c-w>-
|
|
noremap <c-left> <c-w>>
|
|
noremap <c-right> <c-w><
|
|
|
|
" Wildmenu
|
|
set wildmenu
|
|
set wildmode=full
|
|
set wildoptions=pum
|
|
runtime! menu.vim
|
|
set wildcharm=<C-z>
|
|
nnoremap <F10> :emenu<Space><C-z>
|
|
|
|
" Set colorscheme
|
|
colorscheme molokai
|
|
let g:molokai_original = 1
|
|
let g:rehash256 = 1
|
|
|
|
" Airline options
|
|
let g:airline_powerline_fonts = 1
|
|
let g:airline#extensions#keymap#enabled = 0
|
|
let g:airline_section_z = "\ue0a1:%l/%L Col:%c"
|
|
let g:Powerline_symbols='unicode'
|
|
let g:airline#extensions#xkblayout#enabled = 0
|
|
let g:airline#extensions#syntastic#enabled = 1
|
|
|
|
" Syntastic options
|
|
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
|
|
|
|
" Change mode cursor color in xterm
|
|
" Avoid spawning shell (silent !echo) which causes garbage output in some terminals.
|
|
" t_EI is sent on VimEnter automatically when leaving insert mode context.
|
|
if &term =~ "xterm-256color\\|rxvt"
|
|
let &t_SI = "\033]Pl00d7ff\033\\"
|
|
let &t_SR = "\033]Plf00000\033\\"
|
|
let &t_EI = "\033]Plff8708\033\\"
|
|
autocmd VimEnter * let &t_EI = "\033]Plff8708\033\\" | redraw
|
|
autocmd VimLeave * try | call writefile(["\033]Plc1ffc1\033\\"], '/dev/tty') | catch | endtry
|
|
endif
|
|
|
|
" Show tabs and trails
|
|
set list
|
|
set listchars=tab:--,trail:.
|
|
|
|
" Override theme color settings for tabs and trails
|
|
function! MyHighlights() abort
|
|
highlight NonText ctermbg=None ctermfg=DarkGrey
|
|
highlight SpecialKey ctermbg=None ctermfg=DarkGrey
|
|
endfunction
|
|
|
|
augroup MyColors
|
|
autocmd!
|
|
autocmd ColorScheme * call MyHighlights()
|
|
augroup END
|
|
|
|
" Jump to the last position when reopening a file
|
|
if has("autocmd")
|
|
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
|
|
\| exe "normal! g'\"" | endif
|
|
endif
|
|
|
|
" Cleaning up tabs and spaces in file
|
|
function! RemoveTrailingSpaces()
|
|
%s/\s\+$//e
|
|
%s/
|
|
//ge
|
|
endfunction
|
|
|
|
function! ConvertTabsToSpaces()
|
|
%retab
|
|
endfunction
|
|
|
|
function! CleanFile()
|
|
call ConvertTabsToSpaces()
|
|
call RemoveTrailingSpaces()
|
|
endfunction
|
|
|
|
" Key binding \f to clean up file
|
|
nmap <silent> <leader>f <Esc>:call CleanFile()<CR>
|
|
|
|
" Fold lines starting with input arg
|
|
" function! FoldSomething(lnum)
|
|
" let line1=getline(a:lnum)
|
|
" if line2=~#'^\s*;'
|
|
" return >1
|
|
" endif
|
|
" return =
|
|
" endfunction
|
|
|
|
"set foldexpr=FoldSomething(v:lnum)
|
|
" set foldmethod=expr
|
|
" set foldcolumn=3
|
|
" finish
|
|
|
|
" command! FL :call FoldSomething()
|