Skip to content

Instantly share code, notes, and snippets.

@harrygallagher4
Last active September 22, 2020 23:57
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 harrygallagher4/d64532090af720059f19880e74f7dfd1 to your computer and use it in GitHub Desktop.
Save harrygallagher4/d64532090af720059f19880e74f7dfd1 to your computer and use it in GitHub Desktop.
nvimrc
{
"npm.binPath": "/Users/harry/.asdf/installs/nodejs/12.17.0/bin/npm",
"eslint.nodePath": "/Users/harry/.asdf/installs/nodejs/12.17.0/bin/node",
"coc.preferences.bracketEnterImprove": false,
"coc.preferences.enableFloatHighlight": true,
"coc.preferences.colorSupport": true,
"coc.source.around.enable": false,
"coc.source.buffer.enable": false,
"coc.source.file.ignoreHidden": false,
"diagnostic.checkCurrentLine": false,
"diagnostic.enableHighlightLineNumber": true,
"diagnostic.enableMessage": "always",
"diagnostic.maxWindowHeight": 12,
"diagnostic.messageDelay": 500,
"diagnostic.messageTarget": "float",
"diagnostic.separateRelatedInformationAsDiagnostics": true,
"diagnostic.virtualText": false,
"diagnostic.virtualTextCurrentLineOnly": true,
"prettier.semi": false,
"prettier.tabWidth": 2,
"prettier.singleQuote": true,
"prettier.disableSuccessMessage": true,
"signature.enable": true,
"signature.floatMaxWidth": 60,
"signature.hideOnTextChange": false,
"signature.maxWindowHeight": 12,
"signature.target": "float",
"signature.triggerSignatureWait": 50,
"snippets.loadFromExtensions": true,
"snippets.shortcut": "S",
"snippets.snipmate.enable": false,
"snippets.ultisnips.enable": true,
"snippets.extends": {
"javascriptreact": ["javascript"],
"typescriptreact": ["typescript"],
"typescript": ["javascript"]
},
"suggest.acceptSuggestionOnCommitCharacter": true,
"suggest.autoTrigger": "always",
"suggest.enablePreselect": true,
"suggest.enablePreview": true,
"suggest.floatEnable": true,
"suggest.maxCompleteItemCount": 500,
"suggest.minTriggerInputLength": 1,
"suggest.noselect": false,
"suggest.snippetIndicator": " \uf63d",
"suggest.timeout": 2000,
/* Language Specific */
"tsserver.enableJavascript": true,
"tsserver.implicitProjectConfig.checkJs": false,
"tsserver.implicitProjectConfig.experimentalDecorators": true,
"typescript.implementationsCodeLens.enable": true,
"typescript.referencesCodeLens.enable": true,
"typescript.showUnused": false,
"javascript.implementationsCodeLens.enable": true,
"javascript.referencesCodeLens.enable": true,
"javascript.showUnused": false,
"javascript.suggest.enabled": true,
"javascript.suggestionActions.enabled": true,
"codeLens.enable": false,
/* * * * * * * * * * */
"vimlsp.suggest.fromRuntimepath": true,
"vimlsp.suggest.fromVimruntime": true,
"coc.preferences.rootPatterns": [
".envrc",
".fdignore",
".git",
".gitignore",
".hg",
".projections.json",
".vim",
"jsconfig.json",
"node_modules",
"package-lock.json",
"package.json",
"project.clj",
"shadow-cljs.edn",
"tsconfig.json"
],
"languageserver": {
"clojure-lsp": {
"command": "clojure-lsp",
// "args": ["-c", "~/.zinit/plugins/snoe---clojure-lsp/clojure-lsp"],
"filetypes": ["clojure"],
"rootPatterns": ["project.clj"],
"additionalSchemes": ["jar", "zipfile"],
"trace.server": "verbose",
"initializationOptions": {
"ignore-classpath-directories": true,
// "source-paths": ["src"],
// "cljfmt": {
// "indents": {
// "#.*": [["block", 0]],
// "ns": [["inner", 0], ["inner", 1]],
// "and": [["inner", 0]],
// "or": [["inner", 0]],
// "are": [["inner", 0]]
// }},
"macro-defs": {
"clojure.core/dotimes": ["bindings", "bound-elements"]
}
}
}
},
"suggest.completionItemKindLabels": {
//"class": "\uf0e8",
//"color": "\ue22b",
//"constant": "\uf8fe",
//"enum": "\uf435",
//"enumMember": "\uf02b",
//"event": "\ufacd",
//"field": "\uf9be",
//"file": "\uf723",
//"folder": "\uf114",
//"function": "\uf794",
//"interface": "\uf417",
//"keyword": "\uf1de",
//"method": "\uf794",
//"module": "\uf40d",
//"operator": "\u03a8",
//"property": "\ue624",
//"reference": "\ufa46",
//"snippet": "\ue60b",
//"struct": "\ufb44",
//"text": "\ue612",
//"typeParameter": "\uf728",
//"unit": "\uf475",
//"value": "\uf89f",
//"variable": "\ue79b",
//"default": "\uf29c"
},
/*
module
nf-mdi-code-braces
f668
*/
/*"cSpell.ignoreWords": [
"cmss",
"minecraft",
"shopify",
"squarespace"
]*/
}
" vim: foldmethod=marker foldlevel=2
set nocompatible
if empty(glob('~/.config/nvim/autoload/plug.vim'))
silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
set termguicolors
set background=dark
let base16colorspace=256
let g:vim_jsx_pretty_colorful_config = 1
let g:rainbow_active = 1
" vim-plug {{{1
call plug#begin('~/.config/nvim/plugins')
Plug '~/.config/nvim/localplugin'
Plug '~/.config/nvim/plugins/fzf-ghq'
Plug '~/Projects/base16/build/templates/vim'
"Plug 'chriskempson/base16-vim'
" Functionality
Plug '/usr/local/opt/fzf'
Plug 'andymass/vim-matchup'
Plug 'editorconfig/editorconfig-vim'
Plug 'honza/vim-snippets'
Plug 'junegunn/fzf.vim'
Plug 'junegunn/goyo.vim'
Plug 'junegunn/vim-easy-align'
Plug 'junegunn/vim-slash'
Plug 'neoclide/coc.nvim'
Plug 'tpope/vim-surround'
Plug 'tpope/vim-commentary'
Plug 'Townk/vim-autoclose'
Plug 'skywind3000/asynctasks.vim'
Plug 'skywind3000/asyncrun.vim'
Plug 'rbgrouleff/bclose.vim'
Plug 'francoiscabrol/ranger.vim'
"Plug 'vimwiki/vimwiki'
" Clojure gets its own section because it requires so many plugins
"Plug 'luochen1990/rainbow'
Plug 'kovisoft/paredit', { 'for': 'clojure' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
Plug 'venantius/vim-cljfmt', { 'for': 'clojure' }
Plug 'guns/vim-clojure-static', { 'for': 'clojure' }
Plug 'brandonvin/vim-clojure-highlight', { 'for': 'clojure' }
Plug 'eraserhd/parinfer-rust', { 'for': 'clojure',
\ 'do': 'cargo build --release' }
Plug 'darfink/vim-plist'
Plug 'neoclide/jsonc.vim'
Plug 'sheerun/vim-polyglot'
" Interface
Plug 'airblade/vim-gitgutter'
Plug 'mhinz/vim-startify'
Plug 'ryanoasis/vim-devicons'
Plug 'liuchengxu/vista.vim'
Plug 'tpope/vim-vinegar'
"Plug 'sickill/vim-monokai'
"Plug 'patstockwell/vim-monokai-tasty'
"Plug 'easymotion/vim-easymotion'
"Plug 'Soares/base16.nvim'
"Plug 'fatih/molokai'
call plug#end()
" }}}
filetype plugin indent on
let mapleader = "\<Space>"
augroup colorfix
autocmd!
autocmd ColorScheme base16* call harryg#colors#customize_base16()
augroup END
if filereadable(expand("~/.vimrc_background"))
let base16colorspace=256
source ~/.vimrc_background
endif
augroup custom_filetypes
autocmd!
autocmd BufNewFile,BufRead *.prisma set filetype=graphql
autocmd BufRead coc-settings.json set filetype=jsonc
augroup END
set backupdir=~/.config/nvim/.backup " store backup files
set directory=~/.config/nvim/.backup " store swap files
set undodir=~/.config/nvim/.undofiles " store undo files
set autoread " read changes to unmodified buffers
set backspace=indent,eol,start " make backspace work in insert mode
set cursorline
set eadirection=hor
set expandtab " tab -> spaces
set hidden " keep buffers around when closed
set hlsearch " highlight search matches
set ignorecase " ignore case in search
set incsearch " show search matches while typing
set linebreak " wrap at words
set mouse=a
set nobackup
set noequalalways " don't resize windows when I open a new one
set nowrap
set number " show line numbers
set numberwidth=4
set pumheight=15
set scrolloff=3
set shiftwidth=4
set showcmd " show commands in progress
set signcolumn=auto
set smartcase " don't ignore case when we include an upper-case letter
set smarttab
set softtabstop=4
set splitbelow
set splitright
set tabstop=4
set undofile
set wildmenu " use menu for tab completion
set wildmode=longest,full " don't use menu for first completion
set writebackup
let g:ranger_map_keys = 0
let g:ranger_replace_netrw = 1
let g:ranger_command_override =
\ 'TERM="xterm-kitty" ranger --cmd "set preview_images=false"'
let g:EasyMotion_do_mapping = 0
let g:asynctasks_term_pos = 'bottom'
let g:asynctasks_term_focus = 0
let g:asynctasks_term_reuse = 1
let g:asynctasks_term_rows = 10
let g:asynctasks_term_cols = 80
let g:netrw_banner = 0
let g:netrw_browse_split = 4
let g:netrw_winsize = 15
let g:startify_change_to_dir = 0
let g:startify_fortune_use_unicode = 1
let g:startify_session_dir = '~/.config/nvim/sessions'
let g:startify_bookmarks = [
\ {',': '~/.config/nvim/init.vim'},
\ {'<': '~/.config/nvim/localplugin'},
\ {'z': '~/.zshrc' },
\ {'d': '.'},
\ {'K': '~/.config/kitty/kitty.conf'},
\ {'I': '~/.config/kitty/theme.conf'}]
let g:startify_lists = [
\ { 'type': 'dir', 'header': [' MRU '. getcwd()] },
\ { 'type': 'files', 'header': [' MRU'] },
\ { 'type': 'sessions', 'header': [' Sessions'] },
\ { 'type': 'bookmarks', 'header': [' Bookmarks'] }]
let g:matchup_matchparen_offscreen = {}
let g:matchup_matchparen_deferred = 1
let g:matchup_matchparen_pumvisible = 0
let g:matchup_matchparen_hi_background = 0
let g:matchup_matchparen_hi_surround_always = 0
let g:fireplace_cljs_repl = '(shadow/repl :app)'
let g:gitgutter_enabled = 0
let g:gitgutter_map_keys = 0
let g:gitgutter_grep = 'rg --color never'
let g:rainbow_conf = {
\ 'guifgs': ['#a6e22e',
\ '#66d9ef',
\ '#f4bf75',
\ '#ae81ff',
\ '#a1efe4',
\ '#f92672'],
\ 'ctermfgs': ['117',
\ '84',
\ '215',
\ '212',
\ '203',
\ '228'] }
let $FZF_DEFAULT_OPTS=$FZF_DEFAULT_OPTS . ' --reverse --margin=0,0'
let g:fzf_layout = {
\ 'window': {
\ 'width': 0.9,
\ 'height': 0.6,
\ 'highlight': 'VertSplit',
\ 'border': 'sharp'
\ }}
let g:fzf_action = {
\ 'ctrl-i': 'vsplit',
\ 'ctrl-o': 'split'
\ }
let g:vista_default_executive = 'coc'
let g:vista#executives = ['coc']
let g:vista_blink = [0, 0]
let g:vista_echo_cursor_strategy = 'floating_win'
" 'enable plugin' type stuff
let g:paredit_leader = '\'
let g:paredit_smartjump = 1
" autocommands {{{3
augroup netrw_map
autocmd!
autocmd filetype netrw call harryg#netrw_map()
augroup END
augroup harry
autocmd!
autocmd BufRead,BufNewFile *.adoc set filetype=asciidoc
autocmd TermOpen * set filetype=term
autocmd WinEnter term://* call harryg#maybe_start_terminal_insert()
autocmd FileType netrw call harryg#set_explorer_window()
autocmd FileType netrw set signcolumn=yes:1
augroup END
" }}}
" commands {{{1
command! -nargs=0 Cheat :call harryg#cheat_float()
" }}}
" maps {{{1
" windows
nnoremap <c-x> :wincmd c<cr>
tnoremap <c-x> <c-\><c-n>:wincmd c<cr>
nnoremap <c-k> <c-w>k
inoremap <c-k> <esc><c-w>k
tnoremap <expr> <c-k> harryg#is_fzf() ? "<c-p>" : "<c-\><c-n><c-w>k"
nnoremap <c-j> <c-w>j
inoremap <c-j> <esc><c-w>j
tnoremap <expr> <c-j> harryg#is_fzf() ? "<c-n>" : "<c-\><c-n><c-w>j"
nnoremap <c-h> <c-w>h
inoremap <c-h> <esc><c-w>h
tnoremap <expr> <c-h> harryg#is_fzf() ? "<esc>" : "<c-\><c-n><c-w>h"
nnoremap <c-l> <c-w>l
inoremap <c-l> <esc><c-w>l
tnoremap <expr> <c-l> harryg#is_fzf() ? "<esc>" : "<c-\><c-n><c-w>l"
nnoremap <m-j> gt
nnoremap <m-k> gT
nnoremap <m-x> :tabclose<cr>
nnoremap <silent> <leader>r <c-w>_
nnoremap <silent> <leader>R <c-w>\|
nnoremap ; :
" use H and L for start/end of line because ^/$
" are backwards and annoying to reach
nnoremap H ^
nnoremap L $
vnoremap H ^
vnoremap L $
onoremap H ^
onoremap L $
nmap ga <Plug>(EasyAlign)
" FZF
nnoremap <silent> <leader>p :Files<cr>
nnoremap <silent> <leader>P :Commands<cr>
nnoremap <silent> <leader>o :Buffers<cr>
nnoremap <silent> <leader>t :Rg<cr>
nnoremap <silent> <leader>0 :AsyncTaskFZF<cr>
nnoremap <silent> <leader>i :Vista finder fzf:coc<cr>
nnoremap <silent> <leader>/ :Lines<cr>
nnoremap <silent> <leader>? :BLines<cr>
nnoremap <silent> <leader>e :call harryg#open_or_go_to_explorer()<cr>
inoremap <expr> <c-j> pumvisible() ? "\<c-n>" : "\<c-j>"
inoremap <expr> <c-k> pumvisible() ? "\<c-p>" : "\<c-k>"
cnoremap <expr> <c-j> pumvisible() ? "\<c-n>" : "\<c-j>"
cnoremap <expr> <c-k> pumvisible() ? "\<c-p>" : "\<c-k>"
nnoremap <leader><tab> :b #<cr>
nnoremap <leader>w :w<cr>
" meta-nvim binds
nnoremap <leader>, :e ~/.config/nvim/init.vim<cr>
nnoremap <leader>. :Startify<cr>
nnoremap <plug>(slash-after) zz
" }}}
" coc.nvim {{{3
set updatetime=100
set shortmess+=c
" Use <c-space> to trigger completion.
inoremap <silent><expr> <c-space> coc#refresh()
" Use <cr> to confirm completion, `<C-g>u` means break undo chain at current position.
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
" Use `[g` and `]g` to navigate diagnostics
nmap <silent> [g <Plug>(coc-diagnostic-prev)
nmap <silent> ]g <Plug>(coc-diagnostic-next)
" Remap keys for gotos
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 K to show documentation in preview window
nnoremap <silent> K :call <SID>show_documentation()<CR>
nnoremap <silent> gh :call <SID>show_documentation()<CR>
function! s:show_documentation()
if &filetype == 'vim'
execute 'vertical help '.expand('<cword>')
else
call CocAction('doHover')
endif
endfunction
" Highlight symbol under cursor on CursorHold
"autocmd CursorHold * silent call CocActionAsync('highlight')
"autocmd CursorHold * silent execute "normal \<plug>(matchup-hi-surround)"
" use tab to navigate to next location in snippets
let g:coc_snippet_next = '<tab>'
let g:coc_snippet_prev = '<s-tab>'
nnoremap <silent> <leader>co :<C-u>CocList outline<cr>
nnoremap <silent> <leader>cs :<C-u>CocList -I symbols<cr>
nnoremap <silent> <leader>cl :<C-u>CocList locationlist<cr>
nnoremap <silent> <leader>cc :<C-u>CocList commands<cr>
" rename the current word in the cursor
nmap <leader>cr <Plug>(coc-rename)
nmap <leader>cf <Plug>(coc-format-selected)
vmap <leader>cf <Plug>(coc-format-selected)
" run code actions
vmap <leader>ca <Plug>(coc-codeaction-selected)
nmap <leader>ca <Plug>(coc-codeaction-selected)
" add commands for actions
command! -nargs=0 Format :call CocAction('format')
command! -nargs=? Fold :call CocAction('fold', <f-args>)
command! -nargs=0 Organize :call CocAction('runCommand', 'editor.action.organizeImport')
" Introduce function text object
xmap if <Plug>(coc-funcobj-i)
xmap af <Plug>(coc-funcobj-a)
omap if <Plug>(coc-funcobj-i)
omap af <Plug>(coc-funcobj-a)
" }}}
" statusline {{{2
set laststatus=2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment