self-bootstrapping vimrc's
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

184 lines
3.9 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. filetype plugin indent on
  2. filetype on
  3. syntax on
  4. let g:mapleader=" "
  5. let g:just_installed = 0
  6. set backspace=indent,eol,start
  7. function! InstallPlug()
  8. if !filereadable(expand("~/.vim/autoload/plug.vim"))
  9. " try to install plug using curl and wget
  10. " If installation succeeds, we should source vim plug.
  11. if !executable('git')
  12. echom 'git not found.'
  13. finish
  14. endif
  15. if executable('curl')
  16. let result = system('curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim')
  17. if v:shell_error == 0
  18. let g:just_installed = 1
  19. return
  20. endif
  21. endif
  22. echom 'curl failed, trying wget. ' . result
  23. if executable('wget') && executable('mkdir')
  24. let result = system('mkdir -p ~/.vim/autoload && wget -O ~/.vim/autoload/plug.vim https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim')
  25. if v:shell_error == 0
  26. let g:just_installed = 1
  27. return
  28. endif
  29. endif
  30. echom 'wget failed too. ' . result
  31. finish
  32. endif
  33. endfu
  34. call InstallPlug()
  35. if g:just_installed == 1
  36. source ~/.vim/autoload/plug.vim
  37. endif
  38. call plug#begin()
  39. if has('termguicolors')
  40. Plug 'catppuccin/vim'
  41. else
  42. Plug 'junegunn/seoul256.vim'
  43. endif
  44. Plug 'Townk/vim-autoclose'
  45. Plug 'tpope/vim-fugitive'
  46. Plug 'vim-airline/vim-airline'
  47. Plug 'vim-airline/vim-airline-themes'
  48. Plug 'junegunn/goyo.vim'
  49. Plug 'junegunn/limelight.vim'
  50. call plug#end()
  51. " options
  52. set nu
  53. set rnu
  54. set mouse+=a
  55. set linebreak
  56. set shiftwidth=2
  57. set tabstop=2
  58. set softtabstop=2
  59. set expandtab
  60. set smarttab
  61. set shiftround
  62. set autoindent
  63. set textwidth=80
  64. set colorcolumn=80
  65. set nowrap
  66. set undodir=~/.vim/undofiles
  67. set undofile nohlsearch incsearch
  68. set scrolloff=7
  69. set wildmode=longest,list,full
  70. set wildmenu
  71. autocmd FileType tex,text set nosmarttab autoindent
  72. autocmd Filetype python set textwidth=0 formatprg=autopep8 shiftwidth=4 tabstop=4 softtabstop=4
  73. autocmd FileType c,cpp,slang set nosmarttab autoindent
  74. autocmd Filetype markdown set nosmarttab shiftwidth=4 tabstop=4 softtabstop=4 autoindent
  75. autocmd BufReadPost *
  76. \ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
  77. \ | exe "normal! g`\""
  78. \ | endif
  79. " Remaps
  80. nnoremap <C-h> <C-w>h
  81. nnoremap <C-j> <C-w>j
  82. nnoremap <C-k> <C-w>k
  83. nnoremap <C-l> <C-w>l
  84. nnoremap <C-h> <C-w>h
  85. nnoremap <C-j> <C-w>j
  86. nnoremap <C-k> <C-w>k
  87. nnoremap <C-l> <C-w>l
  88. inoremap <A-a> ā
  89. inoremap <A-e> ē
  90. inoremap <A-i> ī
  91. inoremap <A-o> ō
  92. inoremap <A-u> ū
  93. nnoremap <F12> :w<BAR>:!texbld run compile<CR>
  94. nnoremap <F5> :w<BAR>:!./test.sh<CR>
  95. vnoremap J :m '>+1<CR>gv=gv
  96. vnoremap K :m '<-2<CR>gv=gv
  97. nnoremap J mzJ`z
  98. nnoremap <C-d> <C-d>zz
  99. nnoremap <C-u> <C-u>zz
  100. nnoremap n nzzzv
  101. nnoremap N Nzzzv
  102. xnoremap <leader>p _dP
  103. vnoremap <leader>y +y
  104. nnoremap <leader>y +y
  105. nnoremap <leader>Y +Y
  106. nnoremap <leader>x :!chmod +x %:p<CR>
  107. nnoremap <leader>X :!chmod -x %<CR>
  108. nnoremap <leader>e :! %:p<CR>
  109. nnoremap <leader>1 1gt
  110. nnoremap <leader>2 2gt
  111. nnoremap <leader>3 3gt
  112. nnoremap <leader>4 4gt
  113. nnoremap <leader>5 5gt
  114. nnoremap <leader>6 6gt
  115. nnoremap <leader>7 7gt
  116. nnoremap <leader>8 8gt
  117. nnoremap <leader>9 9gt
  118. nnoremap <leader>b :wprev<CR>
  119. nnoremap <leader>n :wnext<CR>
  120. nnoremap <C-n> :Lexplore<CR>
  121. nnoremap <leader>pv :Explore<CR>
  122. " Plugin options must go at the bottom of the file.
  123. " install plugins
  124. if g:just_installed == 1
  125. echom 'Installing Plugins...'
  126. PlugInstall
  127. endif
  128. if has('termguicolors')
  129. set termguicolors
  130. set background=dark
  131. colorscheme catppuccin_mocha
  132. let g:airline_theme = "catppuccin_mocha"
  133. else
  134. echo 'no termguicolors, falling back to seoul256'
  135. let g:seoul256_background = 234
  136. let g:airline_theme = "seoul256"
  137. set background=dark
  138. colorscheme seoul256
  139. endif
  140. autocmd! User GoyoEnter Limelight
  141. autocmd! User GoyoLeave Limelight!
  142. let g:airline#extensions#tabline#enabled = 1
  143. nnoremap <leader>z :Goyo <CR>
  144. nnoremap <leader>gs :Git <CR>