You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
248 lines
6.9 KiB
VimL
248 lines
6.9 KiB
VimL
" Basics
|
|
set t_Co=256 " Use 256 colors
|
|
set encoding=utf8 " Use utf-8 encoding
|
|
set nocompatible " Get out of vi-compatible mode
|
|
set background=dark " I am using a dark background
|
|
" set background=light " I am using a dark background
|
|
syntax on " Syntax highlighting on
|
|
|
|
command! W write
|
|
command! Q qall
|
|
command! MakeTags !ctags -R .
|
|
|
|
call plug#begin('~/.vim/plugged')
|
|
|
|
Plug 'NLKNguyen/papercolor-theme'
|
|
Plug 'SirVer/ultisnips', { 'tag': '3.2' }
|
|
Plug 'cespare/vim-toml', { 'for': 'toml' }
|
|
Plug 'dense-analysis/ale', { 'tag': 'v2.7.0' }
|
|
Plug 'editorconfig/editorconfig-vim', { 'tag': 'v1.1.1' }
|
|
Plug 'fatih/vim-go', { 'tag': 'v1.22' }
|
|
Plug 'hashivim/vim-hashicorp-tools'
|
|
Plug 'lifepillar/pgsql.vim'
|
|
Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
|
Plug 'preservim/nerdtree', { 'on': 'NERDTreeToggle', 'tag': '6.9.8' }
|
|
Plug 'prettier/vim-prettier', {
|
|
\ 'branch': 'release/1.x',
|
|
\ 'do': 'npm install',
|
|
\ 'for': [
|
|
\ 'css',
|
|
\ 'graphql',
|
|
\ 'html',
|
|
\ 'javascript',
|
|
\ 'json',
|
|
\ 'less',
|
|
\ 'markdown',
|
|
\ 'package',
|
|
\ 'pg',
|
|
\ 'php',
|
|
\ 'pug',
|
|
\ 'python',
|
|
\ 'ruby',
|
|
\ 'scss',
|
|
\ 'sh',
|
|
\ 'swift',
|
|
\ 'toml',
|
|
\ 'typescript',
|
|
\ 'vue',
|
|
\ 'xml',
|
|
\ 'yaml'
|
|
\ ]
|
|
\ }
|
|
Plug 'rust-lang/rust.vim', { 'for': 'rust' }
|
|
Plug 'sheerun/vim-wombat-scheme'
|
|
Plug 'tpope/vim-surround'
|
|
Plug 'vim-scripts/CSApprox'
|
|
|
|
call plug#end()
|
|
|
|
let g:sql_type_default = 'pgsql'
|
|
|
|
"let g:go_metalinter_autosave=1
|
|
"let g:go_metalinter_autosave_enabled=['golint', 'govet', 'typecheck']
|
|
|
|
" General
|
|
"colorscheme solarized
|
|
colorscheme wombat
|
|
"colorscheme PaperColor
|
|
" setlocal spell spelllang=en_us
|
|
set fileformats=unix,dos,mac " support all three, in this order
|
|
set nostartofline " leave my cursor where it was
|
|
set history=10000
|
|
set autoread " Set to auto read when a file is changed from the outside
|
|
set autochdir " Change current directory to be directory of current file
|
|
set colorcolumn=81
|
|
"set foldmethod=syntax
|
|
|
|
" fuzzy finding
|
|
"set path+=**
|
|
|
|
" Have tab complete work more like bash
|
|
set wildmenu
|
|
set wildmode=list:longest
|
|
|
|
set backspace=start,eol,indent
|
|
set whichwrap+=<,>,[,]
|
|
|
|
set magic "Set magic on, for regular expressions
|
|
|
|
" Turn on omni completion. Must have `filetype plugin on` to use.
|
|
" To use, in insert mode press ctrl+x ctrl+o
|
|
set ofu=syntaxcomplete#Complete
|
|
|
|
" Mappings
|
|
let mapleader=","
|
|
let g:mapleader=","
|
|
map <leader>rl :source $MYVIMRC<CR>
|
|
map <leader>nt :NERDTreeToggle<CR>
|
|
map <leader>ss :setlocal spell!<CR>
|
|
map <leader>ct :TlistToggle<CR> " taglist shortcut
|
|
map <leader>ts :%s/\s\s*$//g<CR> " trim trailing whitespace
|
|
nnoremap <leader>rc :split $MYVIMRC<cr>
|
|
nnoremap <leader>d :GoDef
|
|
nnoremap <leader>t :GoDefType
|
|
nnoremap <leader>p :set paste<cr>
|
|
nnoremap <leader>np :set nopaste<cr>
|
|
nnoremap <leader>nn :set nonumber norelativenumber<cr>
|
|
nnoremap <leader>rn :set number relativenumber<cr>
|
|
|
|
if bufwinnr(1)
|
|
map <leader>+ <C-W><
|
|
map <leader>- <C-W>>
|
|
endif
|
|
|
|
" Nerdtree settings
|
|
let NERDTreeDirArrows=1
|
|
let NERDTreeIgnore = ['\.pyc$', '\.swp$']
|
|
|
|
let g:ale_linters = {
|
|
\ 'javascript': ['eslint'],
|
|
\ 'go': ['golint', 'gopls'],
|
|
\}
|
|
|
|
let g:rustfmt_autosave = 1
|
|
|
|
" Close all open buffers on entering a window if the only
|
|
" buffer that's left is the NERDTree buffer
|
|
function! s:CloseIfOnlyNerdTreeLeft()
|
|
if exists("t:NERDTreeBufName")
|
|
if bufwinnr(t:NERDTreeBufName) != -1
|
|
if winnr("$") == 1
|
|
q
|
|
endif
|
|
endif
|
|
endif
|
|
endfunction
|
|
|
|
" Vim Tabs
|
|
map <leader>tt :tabnew<cr>
|
|
map <leader>te :tabedit
|
|
map <leader>tc :tabclose<cr>
|
|
map <leader>to :tabonly<cr>
|
|
map <leader>tn :tabNext<cr>
|
|
map <leader>tp :tabprevious<cr>
|
|
map <leader>tf :tabfirst<cr>
|
|
map <leader>tl :tablast<cr>
|
|
map <leader>tm :tabmove
|
|
|
|
" Tabs
|
|
set expandtab " expandtab converts tabs to spaces. For tabs, set noexpandtab
|
|
set shiftwidth=4 " unify
|
|
set softtabstop=4 " Pressing backspace works like tabs
|
|
set tabstop=4 " real tabs should be 4, but they will show with set list on
|
|
|
|
" Indent
|
|
set autoindent "Auto indent
|
|
set smartindent "Smart indent
|
|
set copyindent " above all -- follow the conventions laid before us
|
|
set preserveindent " above all -- follow the conventions laid before us
|
|
set shiftround " when at 3 spaces, and I hit '>', go to 4, not 5
|
|
filetype plugin on " load filetype plug-ins and indent settings
|
|
filetype indent on " load filetype plug-ins and indent settings
|
|
|
|
" UI
|
|
set showcmd " show the command being typed
|
|
set ruler " Always show current positions along the bottom
|
|
set number relativenumber " Use relative line numbers
|
|
set numberwidth=4 " If we have over 9999 lines
|
|
set hidden " you can change buffer without saving
|
|
"set mouse=a " use mouse everywhere
|
|
|
|
" No sound on errors
|
|
set noerrorbells " don't make noise
|
|
set novisualbell " don't blink
|
|
set t_vb=
|
|
set tm=500
|
|
|
|
" Visual Cues
|
|
set showmatch " show matching brackets
|
|
set matchtime=2 " how many tenths of a second to blink matching brackets for
|
|
set hlsearch " highlight searched for phrases
|
|
set incsearch " BUT do highlight as you type you search phrase
|
|
set scrolloff=5 " Keep 5 lines (top/bottom) for scope
|
|
set sidescrolloff=5 " Keep 5 lines at the size
|
|
set list " we do what to show tabs, to ensure we get them out of my files
|
|
set listchars=tab:\ \ ,trail:… " show tabs and trailing whitespace
|
|
|
|
" ~\file[+] [type] [line,column] [number of lines]
|
|
set statusline=%F%m%r%h%w\ [%Y]\ [%03l,%03v]\ [%L]
|
|
"set statusline+=%#warningmsg#
|
|
"set statusline+=%{SyntasticStatuslineFlag()}
|
|
"set statusline+=%*
|
|
|
|
set laststatus=2 " always show the status line
|
|
|
|
" Text Formatting/Layout
|
|
set nowrap " do not wrap line
|
|
set ignorecase " case insensitive by default
|
|
set smartcase " if there are caps, go case-sensitive
|
|
set completeopt=menu,longest,preview " improve the way autocomplete works
|
|
|
|
autocmd WinEnter * call s:CloseIfOnlyNerdTreeLeft()
|
|
|
|
augroup jade
|
|
au! BufRead,BufNewFile *.jade set syntax=jade
|
|
augroup END
|
|
|
|
augroup javascript
|
|
au! BufRead,BufNewFile *.js.flow set filetype=javascript
|
|
augroup END
|
|
|
|
augroup ruby
|
|
au! BufRead,BufNewFile *.cap set syntax=ruby
|
|
augroup END
|
|
|
|
augroup styl
|
|
au! BufRead,BufNewFile *.styl set syntax=stylus
|
|
augroup END
|
|
|
|
augroup conkyrc
|
|
au! BufRead,BufNewFile *.conkyrc set syntax=conkyrc
|
|
augroup END
|
|
|
|
augroup vcl
|
|
au! BufRead,BufNewFile *.vcl set filetype=vcl
|
|
augroup END
|
|
|
|
augroup mustache
|
|
au! BufRead,BufNewFile *.mustache set filetype=mustache
|
|
au! BufRead,BufNewFile *.mu set filetype=mustache
|
|
au! BufRead,BufNewFile *.hjs set filetype=mustache
|
|
augroup END
|
|
|
|
augroup coffee
|
|
au! BufRead,BufNewFile *.coffee set filetype=coffee
|
|
augroup END
|
|
|
|
augroup markdown
|
|
au! BufRead,BufNewFile *.md set filetype=markdown
|
|
augroup END
|
|
|
|
augroup COMMIT_EDITMSG
|
|
au! BufRead,BufNewFile COMMIT_EDITMSG set filetype=gitcommit
|
|
augroup END
|
|
|
|
augroup typescript
|
|
au! BufRead,BufNewFile *.ts set filetype=typescript
|
|
augroup END
|