Last active
July 6, 2021 12:28
-
-
Save dustinknopoff/c00a69b21f426376230acc31ddac4431 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
set runtimepath^=~/.vim runtimepath+=~/.vim/after | |
let g:python2_host_prog = '/usr/local/bin/python' | |
let g:python3_host_prog = '/usr/local/bin/python3' | |
let &packpath = &runtimepath | |
" Linter | |
" only lint on save | |
let g:ale_lint_on_text_changed = 'never' | |
let g:ale_lint_on_insert_leave = 1 | |
let g:ale_lint_on_save = 0 | |
let g:ale_lint_on_enter = 0 | |
let g:ale_virtualtext_cursor = 1 | |
let g:ale_rust_rls_config = { | |
\ 'rust': { | |
\ 'all_targets': 1, | |
\ 'build_on_save': 1, | |
\ 'clippy_preference': 'on' | |
\ } | |
\ } | |
let g:ale_rust_rls_toolchain = '' | |
let g:ale_linters = {'rust': ['ra_lsp_server']} | |
highlight link ALEWarningSign Todo | |
highlight link ALEErrorSign WarningMsg | |
highlight link ALEVirtualTextWarning Todo | |
highlight link ALEVirtualTextInfo Todo | |
highlight link ALEVirtualTextError WarningMsg | |
highlight ALEError guibg=None | |
highlight ALEWarning guibg=None | |
let g:ale_sign_error = "✖" | |
let g:ale_sign_warning = "⚠" | |
let g:ale_sign_info = "i" | |
let g:ale_sign_hint = "➤" | |
source ~/.vimrc | |
set termguicolors | |
" set guicursor= | |
set guicursor=a:ver25-blinkon10 | |
set mouse=a | |
let g:LanguageClient_serverCommands = { | |
\ 'rust': ['ra_lsp_server'], | |
\ } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
filetype plugin indent on | |
set nocompatible | |
set modelines=0 | |
set autowrite | |
set backspace=indent,eol,start | |
if empty(glob('~/.vim/autoload/plug.vim')) | |
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs | |
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim | |
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC | |
endif | |
call plug#begin('~/.vim/bundle') | |
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } | |
Plug 'itchyny/lightline.vim' , { 'on': [] } | |
Plug 'scrooloose/nerdcommenter' | |
Plug 'Yggdroot/indentLine' | |
Plug 'sheerun/vim-polyglot' | |
Plug 'majutsushi/tagbar', { 'on': [] } | |
Plug 'dustinknopoff/TeaCode-Vim-Extension', { 'on': [] } | |
Plug 'christoomey/vim-tmux-navigator', { 'on': [] } | |
Plug 'airblade/vim-rooter' | |
Plug 'machakann/vim-highlightedyank' | |
Plug 'ncm2/ncm2', { 'on': [] } | |
Plug 'roxma/nvim-yarp', { 'on': [] } | |
Plug 'ncm2/ncm2-bufword', { 'on': [] } | |
Plug 'ncm2/ncm2-path', { 'on': [] } | |
Plug 'chriskempson/base16-vim' | |
Plug 'pest-parser/pest.vim', { 'for': 'pest' } | |
Plug 'ledger/vim-ledger', { 'for': 'journal' } | |
Plug 'mg979/vim-visual-multi', {'branch': 'master'} | |
Plug 'spinks/vim-leader-guide' | |
Plug 'earthly/earthly.vim', { 'branch': 'main' } | |
Plug 'nvim-lua/popup.nvim' | |
Plug 'nvim-lua/plenary.nvim' | |
Plug 'nvim-telescope/telescope.nvim' | |
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} | |
Plug 'nvim-treesitter/playground' | |
Plug 'hrsh7th/nvim-compe' | |
Plug 'nvim-treesitter/nvim-treesitter-textobjects' | |
Plug 'neovim/nvim-lspconfig' | |
Plug 'kabouzeid/nvim-lspinstall' | |
Plug 'kyazdani42/nvim-web-devicons' | |
"MARK | |
call plug#end() | |
set rtp+=~/.fzf | |
let g:AutoPairsFlyMode = 1 | |
syntax on | |
set background=dark | |
"let g:solarized_termcolors=256 | |
set nohlsearch | |
set number | |
set relativenumber | |
set tabstop=4 | |
set shiftwidth=4 | |
set softtabstop=4 | |
set expandtab | |
set encoding=utf-8 | |
" set scrolloff=3 | |
set autoindent | |
set showmode | |
set showcmd | |
set hidden | |
set wildmenu | |
set wildmode=list:longest | |
set wildignore=.hg,.svn,*~,*.png,*.jpg,*.gif,*.settings,Thumbs.db,*.min.js,*.swp,publish/*,intermediate/*,*.o,*.hi,Zend,vendor | |
set visualbell | |
set cursorline | |
set ruler | |
set backspace=indent,eol,start | |
set laststatus=2 | |
set undofile | |
let mapleader = "," | |
" Tame Searching | |
nnoremap / /\v | |
vnoremap / /\v | |
set ignorecase | |
set smartcase | |
set gdefault | |
set incsearch | |
set showmatch | |
"set hlsearch | |
set clipboard=unnamed "use system clipboard | |
nnoremap <leader><space> :noh<cr> ",<space> no highlist | |
nnoremap <tab> % | |
vnoremap <tab> % | |
map <C-J> <C-W>j<C-W>_ | |
map <C-K> <C-W>k<C-W>_ | |
" Line Handling | |
set wrap | |
set textwidth=120 | |
set formatoptions=qrn1 | |
set colorcolumn=120 | |
set list | |
set ttyfast | |
"set hlsearch | |
set showmode | |
set listchars=tab:▸\ ,eol:¬ | |
"Learn Vim | |
"nnoremap <up> <nop> | |
"nnoremap <down> <nop> | |
"nnoremap <left> <nop> | |
"nnoremap <right> <nop> | |
"inoremap <up> <nop> | |
"inoremap <down> <nop> | |
"inoremap <left> <nop> | |
"inoremap <right> <nop> | |
nnoremap j gj | |
nnoremap k gk | |
inoremap <F1> <ESC> | |
nnoremap <F1> <ESC> | |
vnoremap <F1> <ESC> | |
nnoremap ; : | |
au FocusLost * :wa | |
inoremap jj <ESC> | |
nnoremap <leader>w <C-w>v<C-w>l | |
nnoremap <C-h> <C-w>h | |
nnoremap <C-j> <C-w>j | |
nnoremap <C-k> <C-w>k | |
nnoremap <C-l> <C-w>l | |
nnoremap <C-Left> :tabprevious<CR> | |
nnoremap <C-Right> :tabnext<CR> | |
nnoremap <C-j> :tabprevious<CR> | |
nnoremap <C-k> :tabnext<CR> | |
set guioptions-=T " Remove toolbar | |
set vb t_vb= " No more beeps | |
set backspace=2 " Backspace over newlines | |
"set nofoldenable | |
set ttyfast | |
" https://github.com/vim/vim/issues/1735#issuecomment-383353563 | |
set lazyredraw | |
set synmaxcol=500 | |
set laststatus=2 | |
set relativenumber " Relative line numbers | |
set number " Also show current absolute line | |
set diffopt+=iwhite " No whitespace in vimdiff | |
" Make diffing better: https://vimways.org/2018/the-power-of-diff/ | |
set diffopt+=algorithm:patience | |
set diffopt+=indent-heuristic | |
set showcmd " Show (partial) command in status line. | |
set mouse=a " Enable mouse usage (all modes) in terminals | |
set shortmess+=c " don't give |ins-completion-menu| messages. | |
" Show those damn hidden characters | |
" Verbose: set listchars=nbsp:¬,eol:¶,extends:»,precedes:«,trail:• | |
set listchars=nbsp:¬,extends:»,precedes:«,trail:• | |
" [Buffers] Jump to the existing window if possible | |
"; | |
" Ripgrep Search | |
" ,Find | |
" @param string: contents to search | |
" --column: Show column number | |
" --line-number: Show line number | |
" --no-heading: Do not show file headings in results | |
" --fixed-strings: Search term as a literal string | |
" --ignore-case: Case insensitive search | |
" --no-ignore: Do not respect .gitignore, etc... | |
" --hidden: Search hidden files and folders | |
" --follow: Follow symlinks | |
" --glob: Additional conditions for search (in this case ignore everything in the .git/ folder) | |
" --color: Search color options | |
"" | |
" :Find fzf/rg open files | |
"NERDTree Stuff | |
"autocmd vimenter * NERDTree | |
"autocmd StdinReadPre * let s:std_in=1 | |
"autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif | |
"autocmd StdinReadPre * let s:std_in=1 | |
"autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif | |
"; | |
" Toggle Nerdtree | |
" ctrl+n | |
"" | |
map <C-n> :NERDTreeToggle<CR> | |
"autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && "b:NERDTree.isTabTree()) | q | endif | |
imap <C-e> <C-O>:call TeaCodeExpand()<CR> | |
autocmd BufWritePre,BufRead *.c :normal gg=G | |
"autocmd FocusGained * :call Highlight_cursor() | |
let g:tagbar_type_rust = { | |
\ 'ctagsbin' : '/usr/local/bin/ctags', | |
\ 'ctagstype' : 'rust', | |
\ 'kinds' : [ | |
\ 'n:modules', | |
\ 's:structures:1', | |
\ 'i:interfaces', | |
\ 'c:implementations', | |
\ 'f:functions:1', | |
\ 'g:enumerations:1', | |
\ 't:type aliases:1:0', | |
\ 'v:constants:1:0', | |
\ 'M:macros:1', | |
\ 'm:fields:1:0', | |
\ 'e:enum variants:1:0', | |
\ 'P:methods:1', | |
\ ], | |
\ 'sro': '::', | |
\ 'kind2scope' : { | |
\ 'n': 'module', | |
\ 's': 'struct', | |
\ 'i': 'interface', | |
\ 'c': 'implementation', | |
\ 'f': 'function', | |
\ 'g': 'enum', | |
\ 't': 'typedef', | |
\ 'v': 'variable', | |
\ 'M': 'macro', | |
\ 'm': 'field', | |
\ 'e': 'enumerator', | |
\ 'P': 'method', | |
\ }, | |
\ } | |
" Add support for markdown files in tagbar. | |
let g:tagbar_type_markdown = { | |
\ 'ctagstype': 'markdown', | |
\ 'ctagsbin' : '~/Documents/3-Resources/dotfiles/init/markdown2ctags.py', | |
\ 'ctagsargs' : '-f - --sort=yes --sro=»', | |
\ 'kinds' : [ | |
\ 's:sections', | |
\ 'i:images' | |
\ ], | |
\ 'sro' : '»', | |
\ 'kind2scope' : { | |
\ 's' : 'section', | |
\ }, | |
\ 'sort': 0, | |
\ } | |
"; | |
" Toggle Tagbar | |
" ,t | |
"" | |
nmap <Leader>t :TagbarToggle<CR> | |
let g:tagbar_show_linenumbers = 2 | |
let g:rustfmt_autosave = 1 | |
set hidden | |
set completeopt=menuone,noselect | |
function! IDE() | |
call plug#load('tagbar', 'TeaCode-Vim-Extension', 'vim-tmux-navigator', 'ncm2', 'nvim-yarp', | |
\ 'ncm2-bufword', 'ncm2-path', 'lightline.vim') | |
echo "Loading IDE plugins" | |
let g:compe = {} | |
let g:compe.enabled = v:true | |
let g:compe.autocomplete = v:true | |
let g:compe.debug = v:false | |
let g:compe.min_length = 1 | |
let g:compe.preselect = 'enable' | |
let g:compe.throttle_time = 80 | |
let g:compe.source_timeout = 200 | |
let g:compe.incomplete_delay = 400 | |
let g:compe.max_abbr_width = 100 | |
let g:compe.max_kind_width = 100 | |
let g:compe.max_menu_width = 100 | |
let g:compe.documentation = v:true | |
let g:compe.source = {} | |
let g:compe.source.path = v:true | |
let g:compe.source.buffer = v:true | |
let g:compe.source.calc = v:true | |
let g:compe.source.nvim_lsp = v:true | |
let g:compe.source.nvim_lua = v:true | |
let g:compe.source.vsnip = v:true | |
let g:compe.source.ultisnips = v:true | |
inoremap <silent><expr> <C-Space> compe#complete() | |
inoremap <silent><expr> <CR> compe#confirm('<CR>') | |
inoremap <silent><expr> <C-e> compe#close('<C-e>') | |
inoremap <silent><expr> <C-f> compe#scroll({ 'delta': +4 }) | |
inoremap <silent><expr> <C-d> compe#scroll({ 'delta': -4 }) | |
"lua require'lspconfig'.rust_analyzer.setup({}) | |
lua << EOF | |
require'lspinstall'.setup() -- important | |
require'nvim-web-devicons'.setup() | |
-- Use an on_attach function to only map the following keys | |
-- after the language server attaches to the current buffer | |
local on_attach = function(client, bufnr) | |
local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end | |
local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end | |
--Enable completion triggered by <c-x><c-o> | |
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') | |
-- Mappings. | |
local opts = { noremap=true, silent=true } | |
-- See `:help vim.lsp.*` for documentation on any of the below functions | |
buf_set_keymap('n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', opts) | |
buf_set_keymap('n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts) | |
buf_set_keymap('n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts) | |
buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts) | |
buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts) | |
buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts) | |
buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts) | |
buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts) | |
buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts) | |
buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts) | |
buf_set_keymap('n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts) | |
buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts) | |
buf_set_keymap('n', '<space>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts) | |
buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts) | |
buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts) | |
buf_set_keymap('n', '<space>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts) | |
buf_set_keymap("n", "<space>f", "<cmd>lua vim.lsp.buf.formatting()<CR>", opts) | |
end | |
local servers = require'lspinstall'.installed_servers() | |
for _, server in pairs(servers) do | |
require'lspconfig'[server].setup{ on_attach = on_attach} | |
end | |
EOF | |
endfunction | |
map <C-i> :call IDE()<CR> | |
function! WrapForTmux(s) | |
if !exists('$TMUX') | |
return a:s | |
endif | |
let tmux_start = "\<Esc>Ptmux;" | |
let tmux_end = "\<Esc>\\" | |
return tmux_start . substitute(a:s, "\<Esc>", "\<Esc>\<Esc>", 'g') . tmux_end | |
endfunction | |
let &t_SI .= WrapForTmux("\<Esc>[?2004h") | |
let &t_EI .= WrapForTmux("\<Esc>[?2004l") | |
function! XTermPasteBegin() | |
set pastetoggle=<Esc>[201~ | |
set paste | |
return "" | |
endfunction | |
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin() | |
if executable('rg') | |
set grepprg=rg\ --no-heading\ --vimgrep | |
set grepformat=%f:%l:%c:%m | |
endif | |
colorscheme base16-gruvbox-dark-hard | |
set guicursor= | |
let base16colorspace=256 | |
set termguicolors | |
" Open NERDTree when there is no file provided | |
autocmd StdinReadPre * let s:std_in=1 | |
" Open NERDTree when a directory is opened | |
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") && getcwd() != g:notes_dir | exe 'NERDTree' argv()[0] | wincmd p | ene | exe 'cd '.argv()[0] | endif | |
" Close NERDTree if no other windows are open | |
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif | |
" Make Ctrlp use ripgrep | |
if executable('rg') | |
let g:ctrlp_user_command = 'rg %s --files --color=never --glob ""' | |
let g:ctrlp_user_caching = 0 | |
endif | |
nnoremap <leader>tn :tabnew<space> | |
" You will have bad experience for diagnostic messages when it's default 4000. | |
set updatetime=300 | |
" Using lua functions | |
nnoremap <leader>ff <cmd>lua require('telescope.builtin').find_files()<cr> | |
nnoremap <leader>fg <cmd>lua require('telescope.builtin').live_grep()<cr> | |
nnoremap <leader>fb <cmd>lua require('telescope.builtin').buffers()<cr> | |
nnoremap <leader>fh <cmd>lua require('telescope.builtin').help_tags()<cr> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment