Skip to content

Instantly share code, notes, and snippets.

@mjs2600
Last active March 5, 2019 17:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mjs2600/4a9ca56836607a753c13f2ab68749398 to your computer and use it in GitHub Desktop.
Save mjs2600/4a9ca56836607a753c13f2ab68749398 to your computer and use it in GitHub Desktop.
vimrc
if !filereadable(glob("~/.config/nvim/autoload/plug.vim"))
!curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
endif
let g:clipboard = {
\ 'name': 'pbcopy',
\ 'copy': {
\ '+': 'pbcopy',
\ '*': 'pbcopy',
\ },
\ 'paste': {
\ '+': 'pbpaste',
\ '*': 'pbpaste',
\ },
\ 'cache_enabled': 0,
\ }
let g:python_host_prog = $HOME . '/nvim2/bin/python'
let g:ruby_host_prog = $HOME . '/.asdf/installs/ruby/2.5.1/bin/ruby'
let g:python3_host_prog = $HOME . '/nvim3/bin/python'
let mapleader = ' '
let maplocalleader = ','
let g:ale_completion_enabled = 1
silent !mkdir -p ~/.vim/undo > /dev/null 2>&1
call plug#begin('~/.vim/plugged')
Plug 'w0rp/ale'
" Plug 'elmcast/elm-vim'
Plug 'vimwiki/vimwiki'
Plug 'vim-airline/vim-airline'
" Plug 'leanprover/lean.vim'
Plug 'rizzatti/dash.vim', { 'on': 'Dash' }
" Plug 'reasonml-editor/vim-reason-plus'
" Plug 'chrisbra/csv.vim'
" Plug 'elixir-lang/vim-elixir'
" Plug 'slashmili/alchemist.vim'
" Plug 'manicmaniac/coconut.vim'
" Plug 'maralla/completor.vim'
" Plug 'thinca/vim-ref'
" Plug 'awetzel/elixir.nvim', { 'do': 'yes \| ./install.sh' }
Plug 'ervandew/supertab'
" Plug 'autozimu/LanguageClient-neovim', {
" \ 'branch': 'next',
" \ 'do': 'bash install.sh',
" \ }
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
Plug 'zchee/deoplete-jedi', { 'for': 'python' }
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug 'junegunn/fzf.vim'
Plug 'mbbill/undotree', { 'on': 'UndotreeToggle' }
Plug 'machakann/vim-highlightedyank'
" Plug 'guns/vim-sexp'
" Plug 'kien/rainbow_parentheses.vim'
Plug 'tpope/vim-commentary'
Plug 'tpope/vim-vinegar'
Plug 'tpope/vim-fugitive'
" Plug 'tpope/vim-rhubarb'
Plug 'tpope/vim-surround'
Plug 'tpope/vim-endwise'
" Plug 'tpope/vim-fireplace'
" Plug 'tpope/vim-sexp-mappings-for-regular-people'
" Plug 'edkolev/tmuxline.vim'
" Plug 'nanotech/jellybeans.vim'
" Plug 'junegunn/seoul256.vim'
Plug 'joshdick/onedark.vim'
Plug 'ryanoasis/vim-devicons'
Plug 'ludovicchabant/vim-gutentags'
Plug 'majutsushi/tagbar', { 'on': 'TagbarToggle' }
" Plug 'rust-lang/rust.vim'
" Plug 'racer-rust/vim-racer'
" Plug 'jmcantrell/vim-virtualenv'
Plug 'sheerun/vim-polyglot'
Plug 'christoomey/vim-tmux-navigator', { 'on': ['TmuxNavigateLeft', 'TmuxNavigateDown', 'TmuxNavigateUp', 'TmuxNavigateRight'] }
call plug#end()
syntax enable
filetype plugin indent on
" let g:jellybeans_background_color_256='NONE'
colorscheme onedark
let g:onedark_termcolors=256
" set background=dark
nnoremap <silent> K :ALEHover<CR>
nnoremap <silent> <cr> :ALEHover<cr>
nnoremap <silent> gd :ALEGoToDefinition<CR>
nnoremap <silent> gf :ALEFix<cr>
nnoremap <silent> <leader>s :ALESymbolSearch
nnoremap <silent> <leader>r :ALEFindReferences<cr>
set expandtab
set shiftwidth=2
set softtabstop=2
set ignorecase
set smartcase
set hlsearch
set incsearch
set inccommand=nosplit
set number
set encoding=utf8 " Necessary to show Unicode glyphs
set list listchars=tab:>>,eol:¬,trail:·
set undofile
set undodir=~/.vim/undo
set shell=zsh
set mouse=a
set vb
set guioptions-=T "remove toolbar
set clipboard+=unnamedplus
set textwidth=80
set colorcolumn=+1
set t_Co=256
set background=dark
set grepprg=rg\ --vimgrep
highlight Normal ctermbg=NONE
highlight nonText ctermbg=NONE
command! -bang -nargs=* Rg
\ call fzf#vim#grep(
\ 'rg --column --line-number --no-heading --color=always '.shellescape(<q-args>), 1,
\ <bang>0 ? fzf#vim#with_preview('up:60%')
\ : fzf#vim#with_preview('right:50%:hidden', '?'),
\ <bang>0)
nnoremap Y y$
" Map <Esc> to exit terminal-mode:
tnoremap <Esc> <C-\><C-n>
" tnoremap <A-h> <C-\><C-N><C-w>h
" tnoremap <A-j> <C-\><C-N><C-w>j
" tnoremap <A-k> <C-\><C-N><C-w>k
" tnoremap <A-l> <C-\><C-N><C-w>l
" inoremap <A-h> <C-\><C-N><C-w>h
" inoremap <A-j> <C-\><C-N><C-w>j
" inoremap <A-k> <C-\><C-N><C-w>k
" inoremap <A-l> <C-\><C-N><C-w>l
" nnoremap <A-h> <C-w>h
" nnoremap <A-j> <C-w>j
" nnoremap <A-k> <C-w>k
" nnoremap <A-l> <C-w>l
let g:tmux_navigator_no_mappings = 1
" nnoremap <silent> <Left> :TmuxNavigateLeft<cr>
" nnoremap <silent> <Down> :TmuxNavigateDown<cr>
" nnoremap <silent> <Up> :TmuxNavigateUp<cr>
" nnoremap <silent> <Right> :TmuxNavigateRight<cr>
tnoremap <silent> <M-h> <C-\><C-N>:TmuxNavigateLeft<cr>
tnoremap <silent> <M-j> <C-\><C-N>:TmuxNavigateDown<cr>
tnoremap <silent> <M-k> <C-\><C-N>:TmuxNavigateUp<cr>
tnoremap <silent> <M-l> <C-\><C-N>:TmuxNavigateRight<cr>
inoremap <silent> <M-h> <C-\><C-N>:TmuxNavigateLeft<cr>
inoremap <silent> <M-j> <C-\><C-N>:TmuxNavigateDown<cr>
inoremap <silent> <M-k> <C-\><C-N>:TmuxNavigateUp<cr>
inoremap <silent> <M-l> <C-\><C-N>:TmuxNavigateRight<cr>
nnoremap <silent> <M-h> :TmuxNavigateLeft<cr>
nnoremap <silent> <M-j> :TmuxNavigateDown<cr>
nnoremap <silent> <M-k> :TmuxNavigateUp<cr>
nnoremap <silent> <M-l> :TmuxNavigateRight<cr>
" noremap <silent> <c-l> <c-w>l
" noremap <silent> <c-h> <c-w>h
" noremap <silent> <c-k> <c-w>k
" noremap <silent> <c-j> <c-w>j
"
noremap <leader>$ :setlocal spell! spelllang=en_us<CR>
noremap <leader>f :Files<CR>
noremap <leader>b :Buffers<CR>
noremap <leader>q :Dash<CR>
noremap <leader>/ :Rg<CR>
noremap <leader>t :Tags<CR>
noremap <leader>y :TagbarToggle<CR>
noremap <leader>u :UndotreeToggle<CR>
noremap <leader>` :terminal<CR>
nnoremap <leader><cr> :nohlsearch<cr>
func! DeleteTrailingWS()
exe 'normal mz'
%s/\s\+$//ge
exe 'normal `z'
endfunc
augroup whitespace
autocmd BufWrite * silent call DeleteTrailingWS()
augroup END
let g:vimwiki_list = [{'path': '~/Dropbox/vimwiki/wikidata',
\ 'syntax': 'markdown', 'ext': '.md'}]
noremap <leader>. :e ~/.config/nvim/init.vim<CR>
"Elixir
autocmd FileType elixir noremap <buffer> <leader><space> :!mix test<cr>
autocmd FileType elixir noremap <buffer> <leader>~ :!mix dialyzer<cr>
augroup filetypedetect
au BufRead,BufNewFile *.exs set filetype=elixir
au BufRead,BufNewFile *.exs,*.ex set textwidth=98
augroup END
autocmd FileType rust noremap <buffer> <leader><space> :!cargo test<cr>
let g:LanguageClient_serverCommands = {
\ 'rust': ['rustup', 'run', 'nightly', 'rls'],
\ 'reason': ['ocaml-language-server', '--stdio'],
\ 'ocaml': ['ocaml-language-server', '--stdio'],
\ 'python': ['pyls'],
\ 'javascript': ['javascript-typescript-stdio'],
\ 'typescript': ['javascript-typescript-stdio'],
\ 'clojure': ['clojure-lsp'],
\ }
let g:tagbar_type_elixir = {
\ 'ctagstype' : 'elixir',
\ 'kinds' : [
\ 'm:modules',
\ 'f:functions',
\ 'functions:functions',
\ 'c:callbacks',
\ 'd:delegates',
\ 'e:exceptions',
\ 'i:implementations',
\ 'a:macros',
\ 'o:operators',
\ 'p:protocols',
\ 'r:records',
\ 't:tests'
\ ]
\ }
" Rust
let g:tagbar_type_rust = {
\ 'ctagstype' : 'rust',
\ 'kinds' : [
\'T:types',
\'f:functions',
\'g:enums',
\'s:structure names',
\'m:modules,module names',
\'c:consts',
\'t:traits',
\'i:impls',
\]
\}
" Haskell
let g:tagbar_type_haskell = {
\ 'ctagsbin' : 'hasktags',
\ 'ctagsargs' : '-x -c -o-',
\ 'kinds' : [
\ 'm:modules:0:1',
\ 'd:data: 0:1',
\ 'd_gadt: data gadt:0:1',
\ 't:type names:0:1',
\ 'nt:new types:0:1',
\ 'c:classes:0:1',
\ 'cons:constructors:1:1',
\ 'c_gadt:constructor gadt:1:1',
\ 'c_a:constructor accessors:1:1',
\ 'ft:function types:1:1',
\ 'fi:function implementations:0:1',
\ 'o:others:0:1'
\ ],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 'm' : 'module',
\ 'c' : 'class',
\ 'd' : 'data',
\ 't' : 'type'
\ },
\ 'scope2kind' : {
\ 'module' : 'm',
\ 'class' : 'c',
\ 'data' : 'd',
\ 'type' : 't'
\ }
\ }
" Auto Formatting
let g:ale_fix_on_save = 1
let g:ale_fixers = {
\ 'elixir': ['mix_format'],
\ 'elm': ['format'],
\ 'javascript': ['prettier'],
\ 'python': ['black', 'isort'],
\ 'reason': ['refmt'],
\ 'rust': ['rustfmt'],
\ 'typescript': ['prettier'],
\}
let b:ale_linters = {
\ 'elixir': ['elixir-ls', 'mix']
\}
let g:ale_elixir_elixir_ls_release = $HOME . '/Code/elixir_ls_release/'
" Markdown
let g:tagbar_type_markdown = {
\ 'ctagstype' : 'markdown',
\ 'kinds' : [
\ 'h:Heading_L1',
\ 'i:Heading_L2',
\ 'k:Heading_L3'
\ ]
\ }
let g:ale_virtualenv_dir_names = ['.env', 'env', 've', 've-py3', 'virtualenv', '.direnv/python-2.7.14', '.direnv/python-3.6.4']
" Use deoplete.
let g:deoplete#enable_at_startup = 1
let g:SuperTabDefaultCompletionType = "<c-n>"
let g:gutentags_cache_dir = '~/.tags_cache'
set statusline+=%{gutentags#statusline()}
let g:polyglot_disabled = ['elm', 'r']
let g:LatexBox_latexmk_async = 1
" let g:LatexBox_latexmk_preview_continuously = 1
" Theme
let g:airline_powerline_fonts = 1
let g:airline_theme='onedark'
let g:airline#extensions#ale#enabled = 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment