Advertisement
anujpandey

vimrc-2020

Oct 29th, 2020
2,068
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VIM 14.41 KB | None | 0 0
  1. " 1) Basic Syntax and Indentation
  2. syntax enable
  3. set tabstop=4
  4. set expandtab
  5. set nu rnu
  6. filetype indent on
  7. set autoindent
  8. " 2) force minimun window width
  9. set winwidth=110
  10. " Run current line as Vim comand/normal mode
  11. set hlsearch
  12. set incsearch
  13. set ignorecase
  14. set smartcase
  15.  
  16. let g:solarized_termtrans=1
  17. " set background=dark
  18. set rtp+=/Users/anujpandey/gitrepos/powerline/powerline/bindings/vim/
  19. if has("gui_running")
  20.    let s:uname = system("uname")
  21.    if s:uname == "Darwin\n"
  22.       set guifont=Meslo\ LG\ S\ for\ Powerline:h18
  23.    endif
  24. endif
  25.  
  26. nnoremap <CR> :nohlsearch<cr>
  27.  
  28. set nocompatible
  29. filetype off
  30. let g:airline#extensions#tabline#enabled = 1
  31. let g:airline_powerline_fonts = 1
  32. let g:airline_theme='angr'
  33.  
  34. set rtp+=~/.vim/bundle/Vundle.vim
  35. call vundle#begin()
  36. Plugin 'VundleVim/Vundle.vim'
  37. Plugin 'ryanoasis/vim-devicons'
  38. Plugin 'jiangmiao/auto-pairs'
  39. Plugin 'neoclide/coc.nvim'
  40. Plugin 'mhinz/vim-startify'
  41. Plugin 'vim-airline/vim-airline'
  42. Plugin 'vim-airline/vim-airline-themes'
  43. Plugin 'powerline/powerline'
  44. Plugin 'tpope/vim-surround'                         " Change surrounding marks
  45. Plugin 'tpope/vim-fugitive'
  46. Plugin 'tpope/vim-rhubarb'
  47. Plugin 'mtdl9/vim-log-highlighting'
  48. Plugin 'sheerun/vim-polyglot'
  49. Plugin 'christoomey/vim-tmux-navigator'
  50.  
  51. Plugin 'tpope/vim-eunuch'
  52. Plugin 'tpope/vim-repeat'
  53. Plugin 'tpope/vim-unimpaired'
  54. Plugin 'tpope/vim-abolish'
  55. Plugin 'vim-ruby/vim-ruby'
  56. " Plugin 'mattn/emmet-vim', { 'for': ['javascript.jsx', 'html', 'css'] }
  57. Plugin 'prettier/vim-prettier', { 'for': ['javascript', 'typescript', 'css', 'less', 'scss', 'json', 'graphql', 'markdown', 'vue', 'yaml', 'html'] }
  58. Plugin 'w0rp/ale'
  59. Plugin 'rbgrouleff/bclose.vim'
  60. Plugin 'cohama/lexima.vim'
  61. Plugin 'easymotion/vim-easymotion'
  62. Plugin 'SirVer/ultisnips'
  63. Plugin 'terryma/vim-multiple-cursors'
  64. Plugin 'gorkunov/smartpairs.vim'
  65. Plugin 'djoshea/vim-autoread'
  66. Plugin 'junegunn/fzf', { 'do': { -> fzf#install() } }
  67. Plugin 'junegunn/fzf.vim'
  68. Plugin 'posva/vim-vue'
  69. Plugin 'matze/vim-move'
  70.  
  71. Plugin 'pangloss/vim-javascript'
  72. " Plugin 'othree/yajs.vim'
  73. " Plugin 'othree/es.next.syntax.vim'
  74. " Plugin 'othree/javascript-libraries-syntax.vim'
  75. " Plugin 'isRuslan/vim-es6'
  76.  
  77. Plugin 'scrooloose/nerdtree'
  78. Plugin 'mxw/vim-jsx', { 'for': ['jsx','javascript.jsx']}
  79. Plugin 'tpope/vim-commentary' " or Plugin 'tomtom/tcomment_vim'
  80. "Plugin 'ervandew/supertab'
  81. Plugin 'othree/html5.vim'
  82. " Test Run
  83. Plugin 'tpope/vim-obsession'
  84. Plugin 'firegoby/html_entities_helper.vim'
  85. Plugin 'dustinknopoff/TeaCode-Vim-Extension'
  86. Plugin 'tpope/vim-vinegar'
  87. Plugin 'itchyny/lightline.vim'
  88. Plugin 'alvan/vim-closetag'
  89.  
  90. " Themes
  91. " Plugin 'lifepillar/vim-solarized8'
  92. " Colour Themes
  93. Plugin 'GertjanReynaert/cobalt2-vim-theme'
  94. Plugin 'altercation/vim-colors-solarized'
  95. Plugin 'kaicataldo/material.vim'
  96. Plugin 'kyoz/purify'
  97. Plugin 'tomasr/molokai'
  98. Plugin 'chriskempson/base16-vim'
  99. Plugin 'dracula/vim'
  100. Plugin 'sonph/onehalf'
  101. Plugin 'gosukiwi/vim-atom-dark'
  102. Plugin 'jacoborus/tender.vim'
  103. Plugin 'ciaranm/inkpot'
  104. Plugin 'connorholyday/vim-snazzy'
  105. Plugin 'ajh17/Spacegray.vim'
  106.  
  107.  
  108.  
  109. " Add plugins here
  110.  
  111. call vundle#end()
  112. filetype plugin indent on
  113. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  114. " => NERDTree
  115. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  116. " Uncomment to autostart the NERDTree
  117. " autocmd vimenter * NERDTree
  118. map <C-n> :NERDTreeToggle<CR>
  119. let g:NERDTreeDirArrowExpandable = '▸'
  120. let g:NERDTreeDirArrowCollapsible = '▾'
  121. let NERDTreeShowLineNumbers=1
  122. let NERDTreeShowHidden=1
  123. let NERDTreeMinimalUI = 1
  124. "Run current line as Vim comand/normal mode"""""""""""""""""""""
  125.  
  126. let mapleader = ","
  127. set cursorline cursorcolumn
  128. nnoremap <Leader>c :set cursorline! cursorcolumn!<CR>
  129. hi CursorLine   cterm=NONE ctermbg=darkgray ctermfg=NONE "guibg=lightgreen guifg=white
  130. hi CursorColumn cterm=NONE ctermbg=darkgray ctermfg=NONE "guibg=lightgreen guifg=blue
  131.  
  132. let g:webdevicons_enable = 1
  133. let g:webdevicons_enable_nerdtree = 1
  134. let g:webdevicons_enable_unite = 1
  135. let g:webdevicons_enable_airline_tabline = 1
  136. let g:webdevicons_enable_airline_statusline = 1
  137. let g:webdevicons_enable_ctrlp = 1
  138. let g:webdevicons_enable_startify = 1
  139.  
  140. nnoremap Q !!sh <CR>
  141. nnoremap <Leader>L yy:@" <CR>
  142. nmap <leader>y "*y
  143. vnoremap <leader>y "*y
  144. nnoremap <leader>Y "*y$
  145. nnoremap <leader>yy "*yy
  146.  
  147. set expandtab
  148.  
  149. " Be smart when using tabs ;)
  150. set smarttab
  151.  
  152. " 1 tab == 4 spaces
  153. set shiftwidth=4
  154. set tabstop=4
  155. set encoding=UTF-8
  156. scriptencoding utf-8
  157.     " something
  158. set list
  159. set runtimepath^=~/.vim/bundle/ctrlp.vim
  160. set listchars=tab:»·,eol:↲,nbsp:␣,trail:•,extends:→,precedes:←,space:.
  161. " set listchars=tab:→\ ,eol:↲,nbsp:␣,trail:•,extends:⟩,precedes:⟨,space:.
  162. let g:github_enterprise_urls = ['https://orahub.oraclecorp.com']
  163. let g:prettier#autoformat = 0
  164. autocmd BufWritePre *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue PrettierAsync
  165. " PrettierAsync
  166.  
  167. " Autocorrect
  168. let b:ale_fixers = ['prettier', 'eslint']
  169. " set guifont=FiraCodeNerdFontCompleteM-Regular:h15
  170. set guifont=DroidSansMonoForPowerline:h18
  171.  
  172. " Enter date using F3
  173. nmap <F3> i<C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR><Esc>
  174. imap <F3> <C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR>
  175.  
  176. " System clipboard sharing
  177. set clipboard=unnamed
  178. set clipboard=unnamedplus
  179.  
  180. set hidden
  181. set wildmenu
  182. set showcmd
  183.  
  184. " Allow backspacing over autoindent, line breaks and start of insert action
  185. set backspace=indent,eol,start
  186.  
  187. " When opening a new line and no filetype-specific indenting is enabled, keep
  188. " the same indent as the line you're currently on. Useful for READMEs, etc.
  189. set autoindent
  190.  
  191. " Stop certain movements from always going to the first character of a line.
  192. " While this behaviour deviates from that of Vi, it does what most users
  193. " coming from other editors would expect.
  194. set nostartofline
  195.  
  196. " Display the cursor position on the last line of the screen or in the status
  197. " line of a window
  198. set ruler
  199.  
  200. " Always display the status line, even if only one window is displayed
  201. set laststatus=2
  202.  
  203. " Instead of failing a command because of unsaved changes, instead raise a
  204. " dialogue asking if you wish to save changed files.
  205. set confirm
  206.  
  207. " Use visual bell instead of beeping when doing something wrong
  208. set visualbell
  209.  
  210. " And reset the terminal code for the visual bell. If visualbell is set, and
  211. " this line is also included, vim will neither flash nor beep. If visualbell
  212. " is unset, this does nothing.
  213. set t_vb=
  214.  
  215. " Enable use of the mouse for all modes
  216. " set mouse=a
  217.  
  218. " Set the command window height to 2 lines, to avoid many cases of having to
  219. " press <Enter> to continue"
  220. " set cmdheight=2
  221. "
  222.  
  223. runtime macros/matchit.vim
  224.  
  225. " =============================================================
  226. "                 GENERAL SETTINGS
  227. " =============================================================
  228.  
  229. set backspace=indent,eol,start
  230. set history=1000
  231. set ruler
  232. set showcmd
  233. set autoindent
  234. set showmatch
  235. set nowrap
  236. set autoread
  237. set autowrite
  238. set backupdir=~/.tmp
  239. set directory=~/.tmp
  240. set viminfo+=!
  241. set guioptions-=T
  242. set laststatus=2
  243. set scrolloff=3
  244. set sidescrolloff=4
  245. set hidden
  246. set tabstop=2
  247. set shiftwidth=2
  248. set softtabstop=2
  249. set expandtab
  250. set regexpengine=1
  251. " set relativenumber
  252. set number
  253. set wrap
  254. set linebreak
  255. set hlsearch
  256. set incsearch
  257. set ignorecase
  258. set smartcase
  259. set mouse=a
  260. set shell=bash
  261. set clipboard=unnamed
  262. set winwidth=100
  263. set winheight=5
  264. set winminheight=5
  265. set winheight=999
  266. set noswapfile
  267. set wildmenu
  268. set nostartofline
  269. " (Hopefully) removes the delay when hitting esc in insert mode
  270. " set noesckeys
  271. set ttimeout
  272. set ttimeoutlen=1
  273. " set listchars=tab:>-,trail:~,extends:>,precedes:<,space:.
  274. set ttyfast
  275. " set lazyredraw
  276. " set re=1
  277.  
  278. set path+=**
  279. set tags=./tags;/
  280. set foldmethod=indent
  281. set signcolumn=yes
  282. " =============================================================
  283. "                    AUTOCOMMANDS
  284. " =============================================================
  285.  
  286. if has("autocmd")
  287.   augroup vimrcEx
  288.     au!
  289.  
  290.     autocmd BufRead *
  291.       \ if line("'\"") > 0 && line("'\"") <= line("$") |
  292.       \   exe "normal g`\"" |
  293.       \ endif
  294.  
  295.     autocmd BufWritePre * :call s:MkNonExDir(expand('<afile>'), +expand('<abuf>'))
  296.     autocmd BufWritePre * :call <SID>StripTrailingWhitespaces()
  297.     autocmd BufRead * normal zR
  298.     " autocmd BufWinLeave *.* mkview
  299.  
  300.     " autocmd BufWinEnter *.* silent loadview
  301.     au BufNewFile,BufReadPost *.md set filetype=markdown
  302.     au BufNewFile,BufReadPost *.vue syntax sync fromstart
  303.  
  304.     autocmd FileType javascript set formatprg=prettier\ --stdin
  305.     "autocmd BufLeave,FocusLost * silent! wall
  306.     autocmd filetype crontab setlocal nobackup nowritebackup
  307.  
  308.   augroup END
  309. endif
  310.  
  311. " =============================================================
  312. "                      MAPPINGS
  313. " =============================================================
  314.  
  315.  
  316. " insert mode
  317. "inoremap <c-e> <down>
  318. "inoremap <c-n> <left>
  319. "inoremap <c-y> <up>
  320. "inoremap <c-i> <right>
  321.  
  322. " Quick open most used files
  323. " nnoremap <leader>em :!open -a 'Marked 2.app' '%:p'<cr>
  324. nnoremap <leader>ev :e ~/.vimrc<cr>
  325. nnoremap <leader>es :vs<cr>:UltiSnipsEdit<cr>
  326.  
  327. " UltiSnips
  328. let g:UltiSnipsExpandTrigger="<tab>"
  329. let g:UltiSnipsJumpForwardTrigger="<tab>"
  330.  
  331. " create/open file in current folder
  332. map <Leader>ee :e <C-R>=escape(expand("%:p:h"),' ') . '/'<CR>
  333.  
  334. nnoremap <silent> <space> :nohl<Bar>:echo<CR>
  335. nnoremap <leader>w mzyyp`zj
  336. nnoremap <leader>v :set invpaste paste?<CR>
  337. nnoremap <leader>V V`]
  338. nnoremap <leader>I V`]=
  339. nnoremap <leader>a ggVG
  340. nnoremap <leader>r :syntax sync fromstart<CR>
  341. nmap k gk
  342. nmap j gj
  343.  
  344. noremap <Leader>d :Bclose<CR>
  345. noremap <Leader>D :bufdo bd<CR>
  346.  
  347. cnoremap %% <C-R>=expand("%:p:h") . "/" <CR>
  348.  
  349. " FZF
  350. nnoremap <leader>f :GFiles<cr>
  351. nnoremap <leader>t :Files<cr>
  352. nnoremap <leader>. :Buffers<cr>
  353.  
  354. " Fugitive
  355. nnoremap <leader>gg :Gstatus<CR>:only<CR>
  356. nnoremap <leader>gw :Gwrite<CR>
  357.  
  358. " Tabs
  359. nnoremap <leader>1 1gt<cr>
  360. nnoremap <leader>2 2gt<cr>
  361. nnoremap <leader>3 3gt<cr>
  362. nnoremap <leader>4 4gt<cr>
  363.  
  364. " inc search for range commands
  365. cnoremap $t <CR>:t''<CR>
  366. cnoremap $T <CR>:T''<CR>
  367. cnoremap $m <CR>:m''<CR>
  368. cnoremap $M <CR>:M''<CR>
  369. cnoremap $d <CR>:d<CR>``
  370.  
  371. " saves cursor after yanking in visual mode
  372. vnoremap y myy`y
  373. vnoremap Y myY`y
  374.  
  375. nnoremap <leader>s :w<cr>
  376.  
  377. " =============================================================
  378. "                 PLUGINS CONFIGURATION
  379. " =============================================================
  380.  
  381. " NERDTree
  382. nnoremap <leader>q :NERDTreeToggle<cr>
  383. let NERDTreeMinimalUI=1
  384. let NERDTreeShowLineNumbers=1
  385. let NERDTreeQuitOnOpen=1
  386. let NERDTreeHijackNetrw = 0
  387.  
  388. " Lightline
  389. let g:lightline = {
  390.       \ 'colorscheme': 'one',
  391.       \ 'active': {
  392.       \   'left': [ [ 'mode', 'paste' ],
  393.       \             [ 'gitbranch', 'readonly', 'filename', 'modified' ] ]
  394.       \ },
  395.       \ 'component_function': {
  396.       \   'gitbranch': 'fugitive#head'
  397.       \ },
  398.       \ }
  399.  
  400. " Easymotion
  401. nmap S <Plug>(easymotion-s2)
  402. nmap s <Plug>(easymotion-s)
  403.  
  404. " Vim Move
  405. let g:move_key_modifier = 'C'
  406.  
  407. " Vue
  408. " let g:vue_disable_pre_processors=1
  409.  
  410. " Markdown
  411. let g:markdown_fenced_languages = ['css', 'erb=eruby', 'javascript', 'js=javascript', 'json=javascript', 'ruby', 'sass', 'xml', 'html']
  412.  
  413. " JSX
  414. let g:jsx_ext_required = 0
  415. let g:javascript_enable_domhtmlcss = 1
  416. let g:used_javascript_libs = 'underscore,react'
  417.  
  418. " Emmet
  419. " let g:user_emmet_settings={'javascript.jsx': {'extends':'jsx'}}
  420. " let g:user_emmet_leader_key='<C-t>'
  421.  
  422. " Tag Autoclose
  423. let g:closetag_filenames = '*.html,*.xhtml,*.phtml,*.vue'
  424.  
  425. " Prettier
  426. nmap <Leader>p <Plug>(Prettier)
  427. let g:prettier#exec_cmd_async = 1
  428. let g:prettier#config#print_width = 80
  429. let g:prettier#config#tab_width = 2
  430. let g:prettier#config#use_tabs = 'false'
  431. let g:prettier#config#semi = 'true'
  432. let g:prettier#config#single_quote = 'false'
  433. let g:prettier#config#bracket_spacing = 'true'
  434. let g:prettier#config#jsx_bracket_same_line = 'false'
  435. let g:prettier#config#trailing_comma = 'none'
  436. let g:prettier#config#parser = 'babylon'
  437. let g:prettier#config#config_precedence = 'prefer-file'
  438. let g:prettier#config#prose_wrap = 'preserve'
  439. let g:prettier#autoformat = 0
  440. autocmd BufWritePre *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue PrettierAsync
  441.  
  442. " Ale
  443. let g:ale_set_highlights = 0
  444. nmap <silent> <Leader>nn <Plug>(ale_previous_wrap)
  445. nmap <silent> <Leader>np <Plug>(ale_next_wrap)
  446. let g:ale_linters = {
  447. \   'javascript': ['eslint'],
  448. \   'ruby': [],
  449. \}
  450.  
  451.  
  452. " =============================================================
  453. "                      APPEARENCE
  454. " =============================================================
  455.  
  456. "set term=xterm
  457. set t_Co=256
  458. let &t_AB="\e[48;5;%dm"
  459. let &t_AF="\e[38;5;%dm"
  460.  
  461. " colorscheme cobalt2
  462. colorscheme base16-ashes
  463. set background=dark
  464.  
  465. if has("gui_running")
  466.   "set guifont=FiraCodeNerdFontCompleteM-Regular:h15
  467.   set guifont=DroidSansMonoForPowerline:h18
  468.   set linespace=6
  469.   set guioptions-=r
  470.   colorscheme base16-gruvbox-dark-hard
  471.   let g:material_theme_style = 'default' " 'palenight' | 'dark'
  472.   let g:material_terminal_italics = 1
  473. endif
  474.  
  475. if (has("nvim"))
  476.   "For Neovim 0.1.3 and 0.1.4 < https://github.com/neovim/neovim/pull/2198 >
  477.   let $NVIM_TUI_ENABLE_TRUE_COLOR=1
  478. endif
  479.  
  480. "For Neovim > 0.1.5 and Vim > patch 7.4.1799 < https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162 >
  481. "Based on Vim patch 7.4.1770 (`guicolors` option) < https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd >
  482. " < https://github.com/neovim/neovim/wiki/Following-HEAD#20160511 >
  483. if (has("termguicolors"))
  484.   set termguicolors
  485. endif
  486.  
  487. " =============================================================
  488. "                      CUSTOM FUNCTIONS
  489. " =============================================================
  490.  
  491. " Create folders on file save
  492. " ===========================
  493.  
  494. function! s:MkNonExDir(file, buf)
  495.     if empty(getbufvar(a:buf, '&buftype')) && a:file!~#'\v^\w+\:\/'
  496.         let dir=fnamemodify(a:file, ':h')
  497.         if !isdirectory(dir)
  498.             call mkdir(dir, 'p')
  499.         endif
  500.     endif
  501. endfunction
  502.  
  503. " Remove whitespaces on save saving cursor position
  504. " =================================================
  505.  
  506. function! <SID>StripTrailingWhitespaces()
  507.     let l = line(".")
  508.     let c = col(".")
  509.     %s/\s\+$//e
  510.     call cursor(l, c)
  511. endfun
  512.  
  513. " Opening  a terminal
  514. " set splitbelow
  515. set splitright
  516. nnoremap <leader>z :terminal<cr><C-w>:exe "resize " . (winheight(0) * 2/3)<CR>
  517.  
  518.  
  519. set macligatures
  520.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement