Last active
June 28, 2024 21:49
-
-
Save claeusdev/656a70d9a9d4a87a9e12ed166088a4af to your computer and use it in GitHub Desktop.
This file contains 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 relativenumber | |
set tabstop=4 | |
set termguicolors | |
set nobackup | |
set nowritebackup | |
set encoding=utf-8 | |
set nocompatible | |
filetype off | |
filetype plugin indent on | |
set encoding=utf-8 " Set default encoding to UTF-8 | |
set autoread " Automatically reread changed files without asking me anything | |
set autoindent | |
set hlsearch " Highlight found searches | |
set mouse=a "Enable mouse mode | |
set noerrorbells " No beeps | |
set showcmd " Show me what I'm typing | |
set noswapfile " Don't use swapfile | |
set nobackup " Don't create annoying backup files | |
set splitright " Split vertical windows right to the current windows | |
set splitbelow " Split horizontal windows below to the current windows | |
set autowrite " Automatically save before :next, :make etc. | |
set hidden | |
set fileformats=unix,dos,mac " Prefer Unix over Windows over OS 9 formats | |
set noshowmode " We show the mode with airline or lightline | |
set ignorecase " Search case insensitive... | |
set smartcase " ... but not it begins with upper case | |
set completeopt=menu,menuone | |
set nocursorcolumn " speed up syntax highlighting | |
set nocursorline | |
set updatetime=300 | |
set pumheight=10 " Completion window max size | |
" | |
" increase max memory to show syntax highlighting for large files | |
set maxmempattern=20000 | |
" color | |
syntax enable | |
let mapleader = " " | |
call plug#begin() | |
" The default plugin directory will be as follows: | |
" - Vim (Linux/macOS): '~/.vim/plugged' | |
" - Vim (Windows): '~/vimfiles/plugged' | |
" - Neovim (Linux/macOS/Windows): stdpath('data') . '/plugged' | |
" You can specify a custom plugin directory by passing it as the argument | |
" - e.g. `call plug#begin('~/.vim/plugged')` | |
" - Avoid using standard Vim directory names like 'plugin' | |
" Make sure you use single quotes | |
" Shorthand notation for GitHub; translates to https://github.com/junegunn/vim-easy-align | |
Plug 'junegunn/vim-easy-align' | |
" Using a tagged release; wildcard allowed (requires git 1.9.2 or above) | |
Plug 'fatih/vim-go', { 'tag': '*' } | |
" Using a non-default branch | |
Plug 'neoclide/coc.nvim', { 'branch': 'release' } | |
" Post-update hook can be a lambda expression | |
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } | |
" If the vim plugin is in a subdirectory, use 'rtp' option to specify its path | |
Plug 'nsf/gocode', { 'rtp': 'vim' } | |
"default settings" | |
Plug 'tpope/vim-surround' | |
Plug 'vim-airline/vim-airline' | |
Plug 'mattn/emmet-vim' | |
Plug 'airblade/vim-gitgutter' | |
Plug 'valloric/youcompleteme' | |
Plug 'tpope/vim-commentary' | |
" Ruby/Rails " | |
Plug 'tpope/vim-rails' | |
Plug 'tpope/vim-endwise' | |
Plug 'tpope/vim-bundler' | |
Plug 'vim-ruby/vim-ruby' | |
" GIT " | |
Plug 'tpope/vim-fugitive' | |
" themes " | |
" Plug 'chriskempson/base16-vim' | |
" LSP settings" | |
Plug 'w0rp/ale' | |
" Emmet | |
Plug 'mattn/emmet-vim' | |
Plug 'tpope/vim-eunuch' | |
" Filetree | |
Plug 'preservim/nerdtree' | |
" Call plug#end to update &runtimepath and initialize the plugin system. | |
" - It automatically executes `filetype plugin indent on` and `syntax enable` | |
call plug#end() | |
" You can revert the settings after the call like so: | |
" filetype indent off " Disable file-type-specific indentation | |
" syntax off " Disable syntax highlighting | |
colorscheme delek | |
let g:ale_linters = { 'rust': ['analyzer'], 'ruby': ['rubocop', 'ruby'], 'javascript': ['prettier', 'eslint'] } | |
let b:ale_fixers = {'javascript': ['prettier', 'eslint']} | |
" Set this variable to 1 to fix files when you save them. | |
let g:ale_ruby_rubocop_auto_correct_all = 1 | |
let g:ale_fix_on_save = 1 | |
" Always show the signcolumn, otherwise it would shift the text each time | |
" diagnostics appear/become resolved | |
set signcolumn=yes | |
" Use tab for trigger completion with characters ahead and navigate | |
" NOTE: There's always complete item selected by default, you may want to enable | |
" no select by `"suggest.noselect": true` in your configuration file | |
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by | |
" other plugin before putting this into your config | |
inoremap <silent><expr> <TAB> | |
\ coc#pum#visible() ? coc#pum#next(1) : | |
\ CheckBackspace() ? "\<Tab>" : | |
\ coc#refresh() | |
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>" | |
" Make <CR> to accept selected completion item or notify coc.nvim to format | |
" <C-g>u breaks current undo, please make your own choice | |
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm() | |
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>" | |
function! CheckBackspace() abort | |
let col = col('.') - 1 | |
return !col || getline('.')[col - 1] =~# '\s' | |
endfunction | |
" Use <c-space> to trigger completion | |
if has('nvim') | |
inoremap <silent><expr> <c-space> coc#refresh() | |
else | |
inoremap <silent><expr> <c-@> coc#refresh() | |
endif | |
" Use `[g` and `]g` to navigate diagnostics | |
" Use `:CocDiagnostics` to get all diagnostics of current buffer in location list | |
nmap <silent> [g <Plug>(coc-diagnostic-prev) | |
nmap <silent> ]g <Plug>(coc-diagnostic-next) | |
" GoTo code navigation | |
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 ShowDocumentation()<CR> | |
function! ShowDocumentation() | |
if CocAction('hasProvider', 'hover') | |
call CocActionAsync('doHover') | |
else | |
call feedkeys('K', 'in') | |
endif | |
endfunction | |
" Highlight the symbol and its references when holding the cursor | |
autocmd CursorHold * silent call CocActionAsync('highlight') | |
" Symbol renaming | |
nmap <leader>rn <Plug>(coc-rename) | |
" Formatting selected code | |
xmap <leader>f <Plug>(coc-format-selected) | |
nmap <leader>f <Plug>(coc-format-selected) | |
augroup mygroup | |
autocmd! | |
" Setup formatexpr specified filetype(s) | |
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') | |
" Update signature help on jump placeholder | |
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') | |
augroup end | |
" Applying code actions to the selected code block | |
" Example: `<leader>aap` for current paragraph | |
xmap <leader>a <Plug>(coc-codeaction-selected) | |
nmap <leader>a <Plug>(coc-codeaction-selected) | |
" Remap keys for applying code actions at the cursor position | |
nmap <leader>ac <Plug>(coc-codeaction-cursor) | |
" Remap keys for apply code actions affect whole buffer | |
nmap <leader>as <Plug>(coc-codeaction-source) | |
" Apply the most preferred quickfix action to fix diagnostic on the current line | |
nmap <leader>qf <Plug>(coc-fix-current) | |
" Remap keys for applying refactor code actions | |
nmap <silent> <leader>re <Plug>(coc-codeaction-refactor) | |
xmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected) | |
nmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected) | |
" Run the Code Lens action on the current line | |
nmap <leader>cl <Plug>(coc-codelens-action) | |
" Map function and class text objects | |
" NOTE: Requires 'textDocument.documentSymbol' support from the language server | |
xmap if <Plug>(coc-funcobj-i) | |
omap if <Plug>(coc-funcobj-i) | |
xmap af <Plug>(coc-funcobj-a) | |
omap af <Plug>(coc-funcobj-a) | |
xmap ic <Plug>(coc-classobj-i) | |
omap ic <Plug>(coc-classobj-i) | |
xmap ac <Plug>(coc-classobj-a) | |
omap ac <Plug>(coc-classobj-a) | |
" Remap <C-f> and <C-b> to scroll float windows/popups | |
if has('nvim-0.4.0') || has('patch-8.2.0750') | |
nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>" | |
nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>" | |
inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>" | |
inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>" | |
vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>" | |
vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>" | |
endif | |
" Use CTRL-S for selections ranges | |
" Requires 'textDocument/selectionRange' support of language server | |
nmap <silent> <C-s> <Plug>(coc-range-select) | |
xmap <silent> <C-s> <Plug>(coc-range-select) | |
" Add `:Format` command to format current buffer | |
command! -nargs=0 Format :call CocActionAsync('format') | |
" Add `:Fold` command to fold current buffer | |
command! -nargs=? Fold :call CocAction('fold', <f-args>) | |
" Add `:OR` command for organize imports of the current buffer | |
command! -nargs=0 OR :call CocActionAsync('runCommand', 'editor.action.organizeImport') | |
" Add (Neo)Vim's native statusline support | |
" NOTE: Please see `:h coc-status` for integrations with external plugins that | |
" provide custom statusline: lightline.vim, vim-airline | |
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} | |
" Mappings for CoCList | |
" Show all diagnostics | |
nnoremap <silent><nowait> <space>a :<C-u>CocList diagnostics<cr> | |
" Manage extensions | |
nnoremap <silent><nowait> <space>e :<C-u>CocList extensions<cr> | |
" Show commands | |
nnoremap <silent><nowait> <space>c :<C-u>CocList commands<cr> | |
" Find symbol of current document | |
nnoremap <silent><nowait> <space>o :<C-u>CocList outline<cr> | |
" Search workspace symbols | |
nnoremap <silent><nowait> <space>s :<C-u>CocList -I symbols<cr> | |
" Do default action for next item | |
nnoremap <silent><nowait> <space>j :<C-u>CocNext<CR> | |
" Do default action for previous item | |
nnoremap <silent><nowait> <space>k :<C-u>CocPrev<CR> | |
" Resume latest coc list | |
nnoremap <silent><nowait> <space>p :<C-u>CocListResume<CR> | |
" NERDTree config | |
nnoremap <leader>n :NERDTreeFocus<CR> | |
nnoremap <C-n> :NERDTree<CR> | |
nnoremap <C-t> :NERDTreeToggle<CR> | |
nnoremap <C-f> :NERDTreeFind<CR> | |
set rtp+=/opt/homebrew/opt/fzf |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment