Last active
January 10, 2022 02:08
-
-
Save Marin-Kitagawa/3bfc78c7c102f7a52f4d7bbc9e24c24a to your computer and use it in GitHub Desktop.
init.vim perfected Neovim nightly
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
execute 'source' fnamemodify(expand('<sfile>'), ':h').'/main.vim' | |
" Install Vim-Plug | |
" iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |` | |
" ni "$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim" -Force | |
" Install Vim-Plug in ~\AppData\Local\nvim\autoload and NOT inside nvim-data | |
set guifont=FiraCode\ Nerd\ Font:h12 | |
set number | |
set relativenumber | |
" set shellslash | |
" Plug plugin install setup | |
call plug#begin('~/AppData/Local/nvim/plugged') | |
Plug 'morhetz/gruvbox' | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'wakatime/vim-wakatime' | |
Plug 'pprovost/vim-ps1' | |
Plug 'preservim/nerdcommenter' | |
Plug 'nikvdp/neomux' | |
Plug 'mhinz/neovim-remote' | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'bryanmylee/vim-colorscheme-icons' | |
Plug 'mhinz/vim-startify' | |
Plug 'junegunn/vim-journal' | |
Plug 'junegunn/rainbow_parentheses.vim' | |
" Functionalities | |
Plug 'tpope/vim-fugitive' | |
Plug 'tpope/vim-sensible' | |
Plug 'tpope/vim-surround' | |
Plug 'majutsushi/tagbar' | |
Plug 'preservim/nerdtree' | |
Plug 'Xuyuanp/nerdtree-git-plugin' | |
Plug 'ryanoasis/vim-devicons' | |
Plug 'scrooloose/nerdcommenter' | |
Plug 'neoclide/coc.nvim', {'branch': 'release'} | |
Plug 'mhinz/vim-signify' | |
Plug 'jiangmiao/auto-pairs' | |
Plug 'junegunn/vim-easy-align' | |
Plug 'alvan/vim-closetag' | |
Plug 'tpope/vim-abolish' | |
Plug 'Yggdroot/indentLine' | |
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } | |
Plug 'junegunn/fzf.vim' | |
Plug 'sheerun/vim-polyglot' | |
Plug 'chrisbra/Colorizer' | |
Plug 'KabbAmine/vCoolor.vim' | |
Plug 'vim-scripts/loremipsum' | |
Plug 'metakirby5/codi.vim' | |
Plug 'dkarter/bullets.vim' | |
Plug 'psliwka/vim-smoothie' | |
" Entertainment | |
Plug 'dansomething/vim-hackernews' | |
" Colorizer i.e. Color visualizer | |
Plug 'norcalli/nvim-colorizer.lua' | |
" Bash support | |
Plug 'WolfgangMehner/bash-support' | |
" View the content of the registers | |
Plug 'tversteeg/registers.nvim', { 'branch': 'main' } | |
" Vim Illuminate | |
Plug 'RRethy/vim-illuminate' | |
" Kotlin | |
Plug 'udalov/kotlin-vim' | |
" Markdown | |
Plug 'godlygeek/tabular' | |
Plug 'plasticboy/vim-markdown' | |
Plug 'instant-markdown/vim-instant-markdown', {'rtp': 'after'} | |
" All of your Plugins must be added before the following line | |
call plug#end() | |
" Configurations for the plugins | |
let g:gruvbox_contrast_dark='soft' | |
let g:gruvbox_improved_strings=1 | |
let g:gruvbox_improved_warnings=1 | |
" Airline | |
let g:airline_powerline_fonts = 1 | |
" let g:airline_section_z = '%3l/%L:%3v' | |
" let g:airline_left_sep = "\uE0B4" | |
" let g:airline_right_sep = "\uE0B6" | |
let g:airline#extensions#coc#enabled = 1 | |
" let g:airline_section_warning = '' | |
" let g:airline_section_error = '' | |
let g:neovide_cursor_vfx_mode = "pixiedust" | |
" Tabline | |
let g:airline#extensions#tabline#enabled = 1 | |
let g:airline#extensions#show_tab_type = 1 | |
let g:airline#extensions#tabline#switch_buffers_and_tabs = 1 | |
" let g:airline#extensions#tabline#buffers_label = 'B' | |
" let g:airline#extensions#tabline#tabs_label = 'T' | |
let g:airline#extensions#tabline#formatter = 'unique_tail' | |
" let g:neovide_fullscreen=v:true | |
" NERDCOMMENTER | |
" Create default mappings | |
let g:NERDCreateDefaultMappings = 1 | |
" Add spaces after comment delimiters by default | |
let g:NERDSpaceDelims = 1 | |
" Use compact syntax for prettified multi-line comments | |
let g:NERDCompactSexyComs = 1 | |
" Align line-wise comment delimiters flush left instead of following code indentation | |
let g:NERDDefaultAlign = 'left' | |
" Set a language to use its alternate delimiters by default | |
let g:NERDAltDelims_java = 1 | |
" Add your own custom formats or override the defaults | |
let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } } | |
" Allow commenting and inverting empty lines (useful when commenting a region) | |
let g:NERDCommentEmptyLines = 1 | |
" Enable trimming of trailing whitespace when uncommenting | |
let g:NERDTrimTrailingWhitespace = 1 | |
" Enable NERDCommenterToggle to check all selected lines is commented or not | |
let g:NERDToggleCheckAllLines = 1 | |
lua require'colorizer'.setup() | |
syntax on | |
highlight Pmenu guibg=#363948 | |
highlight PmenuSbar guibg=#363948 | |
"highlight Comment gui=bold " Uncomment if you want comments to be in bold | |
" Enable True Color Support (ensure you're using a 256-color enabled $TERM, e.g. xterm-256color) | |
set termguicolors | |
" Transparent Background | |
function! TransparentBackground() | |
" Uncomment if you are using a translucent terminal and you want nvim to use that. | |
" Note: only uncomment the 4 lines below, and not the entire function, as it is being used throughout this config | |
highlight Normal guibg=NONE ctermbg=NONE | |
highlight LineNr guibg=NONE ctermbg=NONE | |
set fillchars+=vert:\│ | |
highlight VertSplit gui=NONE guibg=NONE guifg=#444444 cterm=NONE ctermbg=NONE ctermfg=gray | |
endfunction | |
""" Other Configurations | |
filetype plugin indent on | |
set tabstop=4 softtabstop=4 shiftwidth=4 expandtab smarttab autoindent | |
set incsearch ignorecase smartcase hlsearch | |
set wildmode=longest,list,full wildmenu | |
set ruler laststatus=2 showcmd showmode | |
set list listchars=trail:»,tab:»- | |
set fillchars+=vert:\ | |
set wrap breakindent | |
set encoding=utf-8 | |
set textwidth=0 | |
set hidden | |
set number | |
set title | |
call TransparentBackground() | |
""" Plugin Configurations | |
" NERDTree | |
let NERDTreeShowHidden=1 | |
" Exit Vim if NERDTree is the only window left. | |
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif | |
" Airline | |
let g:airline_powerline_fonts = 1 | |
let g:airline_section_z = ' %{strftime("%-I:%M %p")}' | |
let g:airline_section_warning = '' | |
"let g:airline#extensions#tabline#enabled = 1 " Uncomment to display buffer tabline above | |
" Neovim :Terminal | |
tmap <Esc> <C-\><C-n> | |
tmap <C-w> <Esc><C-w> | |
"tmap <C-d> <Esc>:q<CR> | |
autocmd BufWinEnter,WinEnter term://* startinsert | |
autocmd BufLeave term://* stopinsert | |
" vim-pydocstring | |
let g:pydocstring_doq_path = '~/.config/nvim/env/bin/doq' | |
" Supertab | |
let g:SuperTabDefaultCompletionType = "<C-n>" | |
" EasyAlign | |
xmap ga <Plug>(EasyAlign) | |
nmap ga <Plug>(EasyAlign) | |
" indentLine | |
let g:indentLine_char = '▏' | |
let g:indentLine_defaultGroup = 'NonText' | |
" Disable indentLine from concealing json and markdown syntax (e.g. ```) | |
let g:vim_json_syntax_conceal = 0 | |
let g:vim_markdown_conceal = 0 | |
let g:vim_markdown_conceal_code_blocks = 0 | |
" TagBar | |
let g:tagbar_width = 30 | |
" fzf-vim | |
let g:fzf_action = { | |
\ 'ctrl-t': 'tab split', | |
\ 'ctrl-s': 'split', | |
\ 'ctrl-v': 'vsplit' } | |
let g:fzf_colors = | |
\ { 'fg': ['fg', 'Normal'], | |
\ 'bg': ['bg', 'Normal'], | |
\ 'hl': ['fg', 'Comment'], | |
\ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], | |
\ 'bg+': ['bg', 'CursorLine', 'CursorColumn'], | |
\ 'hl+': ['fg', 'Statement'], | |
\ 'info': ['fg', 'Type'], | |
\ 'border': ['fg', 'Constant'], | |
\ 'prompt': ['fg', 'Character'], | |
\ 'pointer': ['fg', 'Exception'], | |
\ 'marker': ['fg', 'Keyword'], | |
\ 'spinner': ['fg', 'Label'], | |
\ 'header': ['fg', 'Comment'] } | |
" Bat theme for syntax coloring when viewing files in fzf | |
let $BAT_THEME='base16' | |
" Limelight | |
let g:limelight_conceal_ctermfg = 'gray' | |
let g:limelight_conceal_guifg = 'gray' | |
" Startify | |
let g:startify_fortune_use_unicode = 1 | |
" Startify + NERDTree on start when no file is specified | |
autocmd VimEnter * | |
\ if !argc() | |
\ | Startify | |
\ | NERDTree | |
\ | wincmd w | |
\ | endif | |
" coc.vim START | |
" Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable | |
" delays and poor user experience. | |
set updatetime=300 | |
" Don't pass messages to |ins-completion-menu|. | |
set shortmess+=c | |
" Always show the signcolumn, otherwise it would shift the text each time | |
" diagnostics appear/become resolved. | |
if has("nvim-0.5.0") || has("patch-8.1.1564") | |
" Recently vim can merge signcolumn and number column into one | |
set signcolumn=number | |
else | |
set signcolumn=yes | |
endif | |
" Use tab for trigger completion with characters ahead and navigate. | |
" 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> | |
\ pumvisible() ? "\<C-n>" : | |
\ <SID>check_back_space() ? "\<TAB>" : | |
\ coc#refresh() | |
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" | |
function! s:check_back_space() 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 | |
" Make <CR> auto-select the first completion item and notify coc.nvim to | |
" format on enter, <cr> could be remapped by other vim plugin | |
inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm() | |
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>" | |
" 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 <SID>show_documentation()<CR> | |
function! s:show_documentation() | |
if (index(['vim','help'], &filetype) >= 0) | |
execute 'h '.expand('<cword>') | |
elseif (coc#rpc#ready()) | |
call CocActionAsync('doHover') | |
else | |
execute '!' . &keywordprg . " " . expand('<cword>') | |
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 | |
" coc.vim END | |
" signify | |
let g:signify_sign_add = '│' | |
let g:signify_sign_delete = '│' | |
let g:signify_sign_change = '│' | |
hi DiffDelete guifg=red guibg=none | |
" FixCursorHold for better performance | |
let g:cursorhold_updatetime = 100 | |
""" Filetype-Specific Configurations | |
" HTML, XML, Jinja | |
autocmd FileType html setlocal shiftwidth=2 tabstop=2 softtabstop=2 | |
autocmd FileType css setlocal shiftwidth=2 tabstop=2 softtabstop=2 | |
autocmd FileType xml setlocal shiftwidth=2 tabstop=2 softtabstop=2 | |
autocmd FileType htmldjango setlocal shiftwidth=2 tabstop=2 softtabstop=2 | |
autocmd FileType htmldjango inoremap {{ {{ }}<left><left><left> | |
autocmd FileType htmldjango inoremap {% {% %}<left><left><left> | |
autocmd FileType htmldjango inoremap {# {# #}<left><left><left> | |
" Markdown and Journal | |
autocmd FileType markdown setlocal shiftwidth=2 tabstop=2 softtabstop=2 | |
autocmd FileType journal setlocal shiftwidth=2 tabstop=2 softtabstop=2 | |
""" Custom Functions | |
" Trim Whitespaces | |
function! TrimWhitespace() | |
let l:save = winsaveview() | |
%s/\\\@<!\s\+$//e | |
call winrestview(l:save) | |
endfunction | |
""" Custom Mappings | |
let mapleader="," | |
nmap <leader>$s <C-w>s<C-w>j:terminal<CR>:set nonumber<CR><S-a> | |
nmap <leader>$v <C-w>v<C-w>l:terminal<CR>:set nonumber<CR><S-a> | |
nmap <leader>q :NERDTreeToggle<CR> | |
nmap \ <leader>q | |
nmap <leader>w :TagbarToggle<CR> | |
nmap \| <leader>w | |
nmap <leader>ee :Colors<CR> | |
nmap <leader>ea :AirlineTheme | |
nmap <leader>e1 :call ColorDracula()<CR> | |
nmap <leader>e2 :call ColorSeoul256()<CR> | |
nmap <leader>e3 :call ColorForgotten()<CR> | |
nmap <leader>e4 :call ColorZazen()<CR> | |
nmap <leader>r :so ~/.config/nvim/init.vim<CR> | |
nmap <leader>t :call TrimWhitespace()<CR> | |
nmap <leader>y <C-w>v<C-w>l:HackerNews best<CR>J | |
nmap <leader>p <Plug>(pydocstring) | |
xmap <leader>a gaip* | |
nmap <leader>a gaip* | |
nmap <leader>s :Rg<CR> | |
nmap <leader>d :Files<CR> | |
nmap <leader>f :BLines<CR> | |
nmap <leader>g :Goyo<CR> | |
nmap <leader>h :RainbowParentheses!!<CR> | |
nmap <leader>j :set filetype=journal<CR> | |
nmap <leader>k :ColorToggle<CR> | |
nmap <leader>l :Limelight!!<CR> | |
xmap <leader>l :Limelight!!<CR> | |
autocmd FileType python nmap <leader>x :0,$!~/.config/nvim/env/bin/python -m yapf<CR> | |
nmap <silent> <leader><leader> :noh<CR> | |
nmap <Tab> :bnext<CR> | |
nmap <S-Tab> :bprevious<CR> | |
autocmd vimenter * ++nested colorscheme gruvbox | |
set scl=no | |
filetype plugin indent on " required |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment