Last active
May 3, 2024 14:56
-
-
Save NimaMX/ccc4012650fb633bdcac287384e924f5 to your computer and use it in GitHub Desktop.
My vim configuration (Airline + Powerline Font + NerdTree+ netrw)
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 nocompatible | |
filetype indent plugin on | |
syn on | |
" vim vundle | |
set rtp+=~/.vim/bundle/Vundle.vim | |
call vundle#begin() | |
Plugin 'ycm-core/YouCompleteMe' | |
Plugin 'VundleVim/Vundle.vim' | |
Plugin 'preservim/nerdtree' | |
Plugin 'arcticicestudio/nord-vim' | |
Plugin 'vim-airline/vim-airline' | |
Plugin 'vim-airline/vim-airline-themes' | |
Plugin 'powerline/powerline-fonts' | |
Plugin 'Lokaltog/powerline' | |
Plugin 'rust-lang/rust.vim' | |
Plugin 'MarcWeber/vim-addon-mw-utils' | |
Plugin 'tomtom/tlib_vim' | |
Plugin 'thindil/robovim' | |
Plugin 'easymotion/vim-easymotion' | |
Plugin 'jiangmiao/auto-pairs' | |
Plugin 'dense-analysis/ale' | |
Plugin 'a.vim' | |
Plugin 'Ada-Bundle' | |
Plugin 'ilyachur/cmake4vim' | |
call vundle#end() | |
" vim plug | |
call plug#begin() | |
Plug 'KabbAmine/zeavim.vim' | |
Plug 'liuchengxu/vista.vim' | |
Plug 'mhinz/vim-startify' | |
Plug 'mhinz/vim-signify' | |
Plug 'skywind3000/vim-quickui' | |
Plug 'google/vim-maktaba' | |
Plug 'google/vim-glaive' | |
Plug 'google/vim-codefmt' | |
Plug 'https://gn.googlesource.com/gn', { 'rtp': 'misc/vim' } | |
call plug#end() | |
set exrc | |
set secure | |
syntax on | |
highlight Pmenu ctermfg=lightgrey ctermbg=black | |
highlight PmenuSel ctermfg=white ctermbg=gray | |
augroup colors | |
au! | |
au ColorScheme * hi whatever | |
augroup END | |
set spell spelllang=en_us | |
hi clear SpellBad | |
hi SpellBad cterm=underline | |
hi clear SpellRare | |
hi SpellRare cterm=underline | |
hi clear SpellCap | |
hi SpellCap cterm=underline | |
hi clear SpellLocal | |
hi SpellLocal cterm=underline | |
let g:ycm_show_diagnostics_ui = 0 | |
let g:ycm_enable_diagnostic_signs = 0 | |
set previewpopup=height:10,width:60 | |
set completeopt=longest,menuone | |
set completepopup=height:10,width:60,border:off | |
set modelines=0 | |
set number | |
set ruler | |
set visualbell | |
set encoding=utf-8 | |
set wrap | |
set textwidth=79 | |
set formatoptions=tcqrn1 | |
set tabstop=4 | |
set shiftwidth=4 | |
set softtabstop=4 | |
set expandtab | |
set noshiftround | |
augroup project | |
autocmd! | |
autocmd BufRead,BufNewFile *.h,*.c set filetype=c.doxygen | |
augroup END | |
let &path.="src/include,/usr/include/AL," | |
set scrolloff=3 | |
set backspace=indent,eol,start | |
set matchpairs+=<:> " use % to jump between pairs | |
runtime! macros/matchit.vim | |
nnoremap j gj | |
nnoremap k gk | |
set hidden | |
set ttyfast | |
set laststatus=2 | |
set showmode | |
set showcmd | |
noremap <C-o> :RangerExplorer<CR> | |
nnoremap / /\v | |
vnoremap / /\v | |
set hlsearch | |
set incsearch | |
set ignorecase | |
set smartcase | |
set showmatch | |
map <leader><space> :let @/=''<cr> " clear search | |
inoremap <F1> <ESC>:set invfullscreen<CR>a | |
nnoremap <F1> :set invfullscreen<CR> | |
vnoremap <F1> :set invfullscreen<CR> | |
map <leader>q gqip | |
set listchars=tab:▸\ ,eol:¬ | |
map <leader>l :set list!<CR> " Toggle tabs and EOL | |
set t_Co=256 | |
set background=dark | |
let g:solarized_termcolors=256 | |
let g:solarized_termtrans=1 | |
set cmdheight=2 | |
nnoremap <leader>n :NERDTreeFocus<CR> | |
nnoremap <C-n> :NERDTree<CR> | |
nnoremap <C-t> :NERDTreeToggle<CR> | |
nnoremap <C-f> :NERDTreeFind<CR> | |
" Start NERDTree and leave the cursor in it. | |
autocmd VimEnter * NERDTree | |
" Start NERDTree and put the cursor back in the other window. | |
autocmd VimEnter * NERDTree | wincmd p | |
" Start NERDTree when Vim is started without file arguments. | |
autocmd StdinReadPre * let s:std_in=1 | |
autocmd VimEnter * if argc() == 0 && !exists('s:std_in') | NERDTree | endif | |
" Start NERDTree. If a file is specified, move the cursor to its window. | |
autocmd StdinReadPre * let s:std_in=1 | |
autocmd VimEnter * NERDTree | if argc() > 0 || exists("s:std_in") | wincmd p | endif | |
" Start NERDTree, unless a file or session is specified, eg. vim -S session_file.vim. | |
autocmd StdinReadPre * let s:std_in=1 | |
autocmd VimEnter * if argc() == 0 && !exists('s:std_in') && v:this_session == '' | NERDTree | endif | |
" Start NERDTree when Vim starts with a directory argument. | |
autocmd StdinReadPre * let s:std_in=1 | |
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists('s:std_in') | | |
\ execute 'NERDTree' argv()[0] | wincmd p | enew | execute 'cd '.argv()[0] | endif | |
" Exit Vim if NERDTree is the only window remaining in the only tab. | |
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif | |
" Close the tab if NERDTree is the only window remaining in it. | |
autocmd BufEnter * if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif | |
" If another buffer tries to replace NERDTree, put it in the other window, and bring back NERDTree. | |
autocmd BufEnter * if bufname('#') =~ 'NERD_tree_\d\+' && bufname('%') !~ 'NERD_tree_\d\+' && winnr('$') > 1 | | |
\ let buf=bufnr() | buffer# | execute "normal! \<C-W>w" | execute 'buffer'.buf | endif | |
" Open the existing NERDTree on each new tab. | |
autocmd BufWinEnter * if getcmdwintype() == '' | silent NERDTreeMirror | endif | |
" Mirror the NERDTree before showing it. This makes it the same on all tabs. | |
nnoremap <C-n> :NERDTreeMirror<CR>:NERDTreeFocus<CR> | |
let g:NERDTreeDirArrowExpandable = '▸' | |
let g:NERDTreeDirArrowCollapsible = '▾' | |
let g:rust_clip_command = 'xclip -selection clipboard' | |
set laststatus=2 | |
" How each level is indented and what to prepend. | |
" This could make the display more compact or more spacious. | |
" e.g., more compact: ["▸ ", ""] | |
" Note: this option only works for the kind renderer, not the tree renderer. | |
let g:vista_icon_indent = ["╰─▸ ", "├─▸ "] | |
" Executive used when opening vista sidebar without specifying it. | |
" See all the avaliable executives via `:echo g:vista#executives`. | |
let g:vista_default_executive = 'ctags' | |
" Set the executive for some filetypes explicitly. Use the explicit executive | |
" instead of the default one for these filetypes when using `:Vista` without | |
" specifying the executive. | |
let g:vista_executive_for = { | |
\ 'cpp': 'vim_lsp', | |
\ 'php': 'vim_lsp', | |
\ } | |
" Declare the command including the executable and options used to generate ctags output | |
" for some certain filetypes.The file path will be appened to your custom command. | |
" For example: | |
let g:vista_ctags_cmd = { | |
\ 'haskell': 'hasktags -x -o - -c', | |
\ } | |
" To enable fzf's preview window set g:vista_fzf_preview. | |
" The elements of g:vista_fzf_preview will be passed as arguments to fzf#vim#with_preview() | |
" For example: | |
let g:vista_fzf_preview = ['right:50%'] | |
" Ensure you have installed some decent font to show these pretty symbols, then you can enable icon for the kind. | |
let g:vista#renderer#enable_icon = 1 | |
" The default icons can't be suitable for all the filetypes, you can extend it as you wish. | |
let g:vista#renderer#icons = { | |
\ "function": "\uf794", | |
\ "variable": "\uf71b", | |
\ } | |
" default updatetime 4000ms is not good for async update | |
set updatetime=100 | |
" Require tpope/vim-repeat to enable dot repeat support | |
" Jump to anywhere with only `s{char}{target}` | |
" `s<CR>` repeat last find motion. | |
nmap s <Plug>(easymotion-s) | |
" Bidirectional & within line 't' motion | |
omap t <Plug>(easymotion-bd-tl) | |
" Use uppercase target labels and type as a lower case | |
let g:EasyMotion_use_upper = 1 | |
" type `l` and match `l`&`L` | |
let g:EasyMotion_smartcase = 1 | |
" Smartsign (type `3` and match `3`&`#`) | |
let g:EasyMotion_use_smartsign_us = 1 | |
" Fix files with prettier, and then ESLint. | |
let b:ale_fixers = ['prettier', 'eslint'] | |
" Equivalent to the above. | |
let b:ale_fixers = {'javascript': ['prettier', 'eslint']} | |
" <Leader>f{char} to move to {char} | |
map <Leader>f <Plug>(easymotion-bd-f) | |
nmap <Leader>f <Plug>(easymotion-overwin-f) | |
" s{char}{char} to move to {char}{char} | |
nmap s <Plug>(easymotion-overwin-f2) | |
" Move to line | |
map <Leader>L <Plug>(easymotion-bd-jk) | |
nmap <Leader>L <Plug>(easymotion-overwin-line) | |
" Move to word | |
map <Leader>w <Plug>(easymotion-bd-w) | |
nmap <Leader>w <Plug>(easymotion-overwin-w) | |
" Function to open the file or NERDTree or netrw. | |
" Returns: 1 if either file explorer was opened; otherwise, 0. | |
function! s:OpenFileOrExplorer(...) | |
if a:0 == 0 || a:1 == '' | |
NERDTree | |
elseif filereadable(a:1) | |
execute 'edit '.a:1 | |
return 0 | |
elseif a:1 =~? '^\(scp\|ftp\)://' " Add other protocols as needed. | |
execute 'Vexplore '.a:1 | |
elseif isdirectory(a:1) | |
execute 'NERDTree '.a:1 | |
endif | |
return 1 | |
endfunction | |
let g:airline_theme='badwolf' | |
let g:airline#extensions#tabline#enabled=1 | |
let g:airline#extensions#tabline#formatter='unique_tail' | |
let g:airline_powerline_fonts=1 | |
"""""""""""" Start Powerline Settings """""""""""""""" | |
set guifont=Inconsolata\ for\ Powerline:h15 | |
let g:Powerline_symbols = 'fancy' | |
set encoding=utf-8 | |
set t_Co=256 | |
set fillchars+=stl:\ ,stlnc:\ | |
set term=xterm-256color | |
set termencoding=utf-8 | |
if has("gui_running") | |
let s:uname = system("uname") | |
if s:uname == "Darwin\n" | |
set guifont=Source\ Code\ Pro\ for\ Powerline:h15 | |
colorscheme PaperColor " set color scheme | |
endif | |
endif | |
" Auto commands to handle OS commandline arguments | |
autocmd StdinReadPre * let s:std_in=1 | |
autocmd VimEnter * if argc()==1 && !exists('s:std_in') | if <SID>OpenFileOrExplorer(argv()[0]) | wincmd p | enew | wincmd p | endif | endif | |
" Command to call the OpenFileOrExplorer function. | |
command! -n=? -complete=file -bar Edit :call <SID>OpenFileOrExplorer('<args>') | |
" Command-mode abbreviation to replace the :edit Vim command. | |
cnoreabbrev e Edit |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment