Guest User

vimrc

a guest
Mar 26th, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.82 KB | None | 0 0
  1. " Begin .vimrc
  2.  
  3. set nocompatible
  4. filetype indent plugin on
  5. syntax on
  6.  
  7. let mapleader=","
  8.  
  9. " au BufWritePost .vimrc so ~/.vimrc
  10.  
  11. colorscheme wal
  12. set noshowmode
  13. " bufwritepost reads up to the end assuming <CR> is a part of a filename
  14.  
  15. au BufWritePost $HOME/notes/*.md execute "normal ,cdd"
  16.  
  17. " Disables automatic commenting on newline:
  18. " autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
  19. " Compile document, be it groff/LaTeX/markdown/etc.
  20. map <leader>c :w! \| !sh $HOME/scripts/compiler.sh <c-r>%<CR><CR>
  21. " Open corresponding .pdf/.html or preview
  22. map <leader>p :!sh $HOME/scripts/opout.sh <c-r>%<CR><CR>
  23.  
  24. nnoremap <F9> :!clear && shellcheck %<CR>
  25.  
  26. set history=700
  27. set undolevels=700
  28. set title " change the terminal's title
  29. set novisualbell " don't beep
  30. set noerrorbells " don't beep
  31. set autoindent " always set autoindenting on
  32. set copyindent " copy the previous indentation on autoindenting
  33. " Formatting tab
  34. set tabstop=4
  35. set softtabstop=4
  36. set shiftwidth=4
  37. set shiftround
  38. set expandtab
  39. " insert tabs on the start of a line according to shiftwidth, not tabstop
  40. set smarttab
  41. " disable scanning included files
  42. set complete-=i
  43. " disable searching tags
  44. set complete-=t
  45. set modeline
  46. " show next match while enter string search
  47. set incsearch
  48. set laststatus=2
  49. " Hide not close buffers e.g. open files wo/ saving changes
  50. set hidden
  51. " Copy/paste options
  52. set pastetoggle=<F5>
  53. set clipboard=unnamedplus
  54. " display incomplete commands
  55. set showcmd
  56. " display completion matches in a status line
  57. set wildmenu
  58. " Show @@@ in the last line if it is truncated.
  59. set display=truncate
  60. " Search
  61. set hlsearch
  62. set incsearch
  63. set ignorecase
  64. set smartcase
  65. " History
  66. set nobackup
  67. set nowritebackup
  68. set noswapfile
  69.  
  70. set mouse=a "using mouse
  71. set bs=2 " Better deleting by backspace
  72. " set backspace=indent,eol,start " allow backspacing over everything in insert mode
  73.  
  74. " Formatting strings and numbers
  75. set norelativenumber
  76. set number
  77. nmap <F2> :set relativenumber!<CR>
  78. set tw=79
  79. "set wrap " divides words when over 80th
  80. set nowrap
  81. set fo+=w " to divide strings after words
  82.  
  83. set path+=**
  84.  
  85. " Go to beginning or end of line
  86. "nnoremap H ^
  87. "nnoremap L $
  88.  
  89. " allow to set specific settings for formats
  90. "autocmd filetype python set expandtab
  91.  
  92. inoremap jk <ESC>
  93. inoremap kj <ESC>
  94. nnoremap ; :
  95. cmap w!! w !sudo tee % >/dev/null
  96.  
  97. " better indentation
  98. vnoremap < <gv
  99. vnoremap > >gv
  100.  
  101. " pararagraphs formatting
  102. vmap Q gq
  103. nmap Q gqap
  104.  
  105. " Undo chronologically instead of tree-model
  106. " nnoremap u g-
  107. " nnoremap U g+
  108.  
  109. "use this to correct typos I did while recording a macro.
  110. nnoremap <leader>m :<c-u><c-r><c-r>='let @'. v:register .' = '. string(getreg(v:register))<cr><c-f><left>
  111.  
  112. " n to always search forward and N backward:
  113. nnoremap <expr> n 'Nn'[v:searchforward]
  114. xnoremap <expr> n 'Nn'[v:searchforward]
  115. onoremap <expr> n 'Nn'[v:searchforward]
  116. nnoremap <expr> N 'nN'[v:searchforward]
  117. xnoremap <expr> N 'nN'[v:searchforward]
  118. onoremap <expr> N 'nN'[v:searchforward]
  119.  
  120. " Map Y to act like D and C, i.e. to yank until EOL, rather than act as yy,
  121. " which is the default
  122. map Y y$
  123.  
  124. " SpellCheckers
  125. map <F6> :setlocal spell! spelllang=en_us<CR>
  126. map <F7> :setlocal spell! spelllang=ru_ru<CR>
  127.  
  128. " Edit/reload .vimrc
  129. " nmap <silent> <leader>ev :e $MYVIMRC<CR>
  130. " nmap <silent> <leader>sv :so $MYVIMRC<CR>
  131.  
  132. nnoremap <F12> :exe '!chromium %'<CR><CR>
  133.  
  134. " Create newline with enter in normal mode
  135. nmap <S-Enter> O<Esc>
  136. nmap <CR> o<Esc>
  137.  
  138. " FOLDS
  139. " Toggle open/close on spacebar
  140. nnoremap <silent> <Space> @=(foldlevel('.')?'za':"\<Space>")<CR>
  141. vnoremap <Space> zf
  142. " set foldmethod=manual
  143. " Save your foldings
  144. " autocmd BufWritePre,BufWinLeave ?* if MakeViewCheck() | silent! mkview | endif
  145. " autocmd BufWinEnter ?* if MakeViewCheck() | silent! loadview | endif
  146. "hi Folded xxx ctermfg=241 ctermbg=255
  147. "hi Folded term=underline cterm=underline ctermfg=250 ctermbg=255 guifg=Cyan guibg=DarkGrey
  148.  
  149. " switch through tabs with ctrl-tab
  150. " terminals see no difference in tab & c-tab
  151. nnoremap <C-h> gT
  152. nnoremap <C-l> gt
  153. nnoremap <S-Tab> gt
  154. nnoremap <C-t> :tabnew<CR>
  155.  
  156. " Toggle highlight in search mode by F4
  157. noremap <F4> :set invhls<CR>
  158.  
  159. " Move around splits with <c-hjkl>
  160. noremap <S-k> <C-w><Up>
  161. noremap <S-j> <C-w><Down>
  162. noremap <S-l> <C-w><Right>
  163. noremap <S-h> <C-w><Left>
  164.  
  165. " Navigating with guides
  166. inoremap <leader><leader> <Esc>/<++><Enter>"_c4l
  167. vnoremap <leader><leader> <Esc>/<++><Enter>"_c4l
  168. map <leader><leader> <Esc>/<++><Enter>"_c4l
  169.  
  170. "BRACKETS
  171. " autocmd FileType html inoremap ,h <html></html><Esc>bbli
  172. inoremap { {}<++><Esc>F{a
  173. inoremap [ []<++><Esc>F[a
  174. inoremap ( ()<++><Esc>F(a
  175. inoremap ` ``<++><Esc>F'i
  176. " inoremap ' ''<++><Esc>F'i
  177. " inoremap " ""<++><Esc>F"i
  178.  
  179. "BIB
  180. autocmd FileType bib inoremap ,a @article{<Enter>author<Space>=<Space>{<++>},<Enter>year<Space>=<Space>{<++>},<Enter>title<Space>=<Space>{<++>},<Enter>journal<Space>=<Space>{<++>},<Enter>volume<Space>=<Space>{<++>},<Enter>pages<Space>=<Space>{<++>},<Enter>}<Enter><++><Esc>8kA,<Esc>i
  181. autocmd FileType bib inoremap ,b @book{<Enter>author<Space>=<Space>{<++>},<Enter>year<Space>=<Space>{<++>},<Enter>title<Space>=<Space>{<++>},<Enter>publisher<Space>=<Space>{<++>},<Enter>}<Enter><++><Esc>6kA,<Esc>i
  182. autocmd FileType bib inoremap ,c @incollection{<Enter>author<Space>=<Space>{<++>},<Enter>title<Space>=<Space>{<++>},<Enter>booktitle<Space>=<Space>{<++>},<Enter>editor<Space>=<Space>{<++>},<Enter>year<Space>=<Space>{<++>},<Enter>publisher<Space>=<Space>{<++>},<Enter>}<Enter><++><Esc>8kA,<Esc>i
  183.  
  184. "LATEX
  185. au BufWritePost *.tex execute "normal ,cdd"
  186. " Word count:
  187. autocmd FileType tex map <leader>w :w !detex \| wc -w<CR>
  188. " Code snippets
  189. autocmd FileType tex inoremap ,fr \begin{frame}<Enter>\frametitle{}<Enter><Enter><++><Enter><Enter>\end{frame}<Enter><Enter><++><Esc>6kf}i
  190. autocmd FileType tex inoremap ,fi \begin{fitch}<Enter><Enter>\end{fitch}<Enter><Enter><++><Esc>3kA
  191. autocmd FileType tex inoremap ,exe \begin{exe}<Enter>\ex<Space><Enter>\end{exe}<Enter><Enter><++><Esc>3kA
  192. autocmd FileType tex inoremap ,em \emph{}<++><Esc>T{i
  193. autocmd FileType tex inoremap ,bf \textbf{}<++><Esc>T{i
  194. autocmd FileType tex vnoremap , <ESC>`<i\{<ESC>`>2la}<ESC>?\\{<Enter>a
  195. autocmd FileType tex inoremap ,it \textit{}<++><Esc>T{i
  196. autocmd FileType tex inoremap ,ct \textcite{}<++><Esc>T{i
  197. autocmd FileType tex inoremap ,cp \parencite{}<++><Esc>T{i
  198. autocmd FileType tex inoremap ,glos {\gll<Space><++><Space>\\<Enter><++><Space>\\<Enter>\trans{``<++>''}}<Esc>2k2bcw
  199. autocmd FileType tex inoremap ,x \begin{xlist}<Enter>\ex<Space><Enter>\end{xlist}<Esc>kA<Space>
  200. autocmd FileType tex inoremap ,ol \begin{enumerate}<Enter><Enter>\end{enumerate}<Enter><Enter><++><Esc>3kA\item<Space>
  201. autocmd FileType tex inoremap ,ul \begin{itemize}<Enter><Enter>\end{itemize}<Enter><Enter><++><Esc>3kA\item<Space>
  202. autocmd FileType tex inoremap ,li <Enter>\item<Space>
  203. autocmd FileType tex inoremap ,ref \ref{}<Space><++><Esc>T{i
  204. autocmd FileType tex inoremap ,tab \begin{tabular}<Enter><++><Enter>\end{tabular}<Enter><Enter><++><Esc>4kA{}<Esc>i
  205. autocmd FileType tex inoremap ,ot \begin{tableau}<Enter>\inp{<++>}<Tab>\const{<++>}<Tab><++><Enter><++><Enter>\end{tableau}<Enter><Enter><++><Esc>5kA{}<Esc>i
  206. autocmd FileType tex inoremap ,can \cand{}<Tab><++><Esc>T{i
  207. autocmd FileType tex inoremap ,con \const{}<Tab><++><Esc>T{i
  208. autocmd FileType tex inoremap ,v \vio{}<Tab><++><Esc>T{i
  209. autocmd FileType tex inoremap ,a \href{}{<++>}<Space><++><Esc>2T{i
  210. autocmd FileType tex inoremap ,sc \textsc{}<Space><++><Esc>T{i
  211. autocmd FileType tex inoremap ,chap \chapter{}<Enter><Enter><++><Esc>2kf}i
  212. autocmd FileType tex inoremap ,sec \section{}<Enter><Enter><++><Esc>2kf}i
  213. autocmd FileType tex inoremap ,ssec \subsection{}<Enter><Enter><++><Esc>2kf}i
  214. autocmd FileType tex inoremap ,sssec \subsubsection{}<Enter><Enter><++><Esc>2kf}i
  215. autocmd FileType tex inoremap ,st <Esc>F{i*<Esc>f}i
  216. autocmd FileType tex inoremap ,beg \begin{DELRN}<Enter><++><Enter>\end{DELRN}<Enter><Enter><++><Esc>4k0fR:MultipleCursorsFind<Space>DELRN<Enter>c
  217. autocmd FileType tex inoremap ,up <Esc>/usepackage<Enter>o\usepackage{}<Esc>i
  218. autocmd FileType tex nnoremap ,up /usepackage<Enter>o\usepackage{}<Esc>i
  219. autocmd FileType tex inoremap ,tt \texttt{}<Space><++><Esc>T{i
  220. autocmd FileType tex inoremap ,bt {\blindtext}
  221. autocmd FileType tex inoremap ,nu $\varnothing$
  222. autocmd FileType tex inoremap ,col \begin{columns}[T]<Enter>\begin{column}{.5\textwidth}<Enter><Enter>\end{column}<Enter>\begin{column}{.5\textwidth}<Enter><++><Enter>\end{column}<Enter>\end{columns}<Esc>5kA
  223. autocmd FileType tex inoremap ,rn (\ref{})<++><Esc>F}i
  224.  
  225. "HTML
  226. autocmd FileType html inoremap ,h <html></html><Esc>bbli
  227. autocmd FileType html inoremap ,b <b></b><Space><++><Esc>FbT>i
  228. autocmd FileType html inoremap ,it <em></em><Space><++><Esc>FeT>i
  229. autocmd FileType html inoremap ,1 <h1></h1><Enter><Enter><++><Esc>2kf<i
  230. autocmd FileType html inoremap ,2 <h2></h2><Enter><Enter><++><Esc>2kf<i
  231. autocmd FileType html inoremap ,3 <h3></h3><Enter><Enter><++><Esc>2kf<i
  232. autocmd FileType html inoremap ,p <p></p><Enter><Enter><++><Esc>02kf>a
  233. autocmd FileType html inoremap ,a <a<Space>href=""><++></a><Space><++><Esc>14hi
  234. autocmd FileType html inoremap ,e <a<Space>target="_blank"<Space>href=""><++></a><Space><++><Esc>14hi
  235. autocmd FileType html inoremap ,ul <ul><Enter><li></li><Enter></ul><Enter><Enter><++><Esc>03kf<i
  236. autocmd FileType html inoremap ,li <Esc>o<li></li><Esc>F>a
  237. autocmd FileType html inoremap ,ol <ol><Enter><li></li><Enter></ol><Enter><Enter><++><Esc>03kf<i
  238. autocmd FileType html inoremap ,im <img src="" alt="<++>"><++><esc>Fcf"a
  239. autocmd FileType html inoremap ,td <td></td><++><Esc>Fdcit
  240. autocmd FileType html inoremap ,tr <tr></tr><Enter><++><Esc>kf<i
  241. autocmd FileType html inoremap ,th <th></th><++><Esc>Fhcit
  242. autocmd FileType html inoremap ,tab <table><Enter></table><Esc>O
  243. autocmd FileType html inoremap ,gr <font color="green"></font><Esc>F>a
  244. autocmd FileType html inoremap ,rd <font color="red"></font><Esc>F>a
  245. autocmd FileType html inoremap ,yl <font color="yellow"></font><Esc>F>a
  246. autocmd FileType html inoremap ,dt <dt></dt><Enter><dd><++></dd><Enter><++><esc>2kcit
  247. autocmd FileType html inoremap ,dl <dl><Enter><Enter></dl><enter><enter><++><esc>3kcc
  248. autocmd FileType html inoremap ,c <code></code><Space><++><Esc>FbT>i
  249. autocmd FileType html inoremap &<space> &amp;<space>
  250.  
  251. "MARKDOWN
  252. autocmd Filetype markdown,rmd map <leader>w yiWi[<esc>Ea](<esc>pa)
  253. autocmd Filetype markdown,rmd inoremap ,n ---<Enter><Enter>
  254. autocmd Filetype markdown,rmd inoremap ,b ****<++><Esc>F*hi
  255. autocmd Filetype markdown,rmd inoremap ,s ~~~~<++><Esc>F~hi
  256. autocmd Filetype markdown,rmd inoremap ,e **<++><Esc>F*i
  257. autocmd Filetype markdown,rmd inoremap ,h ====<Space><++><Esc>F=hi
  258. autocmd Filetype markdown,rmd inoremap ,i ![](<++>)<++><Esc>F[a
  259. autocmd Filetype markdown,rmd inoremap ,a [](<++>)<++><Esc>F[a
  260. autocmd Filetype markdown,rmd inoremap ,1 #<Space><Enter><++><Esc>kA
  261. autocmd Filetype markdown,rmd inoremap ,2 ##<Space><Enter><++><Esc>kA
  262. autocmd Filetype markdown,rmd inoremap ,3 ###<Space><Enter><++><Esc>kA
  263. autocmd Filetype markdown,rmd inoremap ,l --------<Enter>
  264. autocmd Filetype rmd inoremap ,r ```{r}<CR>```<CR><CR><esc>2kO
  265. autocmd Filetype rmd inoremap ,p ```{python}<CR>```<CR><CR><esc>2kO
  266. autocmd Filetype rmd inoremap ,c ```<cr>```<cr><cr><esc>2kO
  267.  
  268. " Specify a directory for plugins
  269. " - For Neovim: ~/.local/share/nvim/plugged
  270. " - Avoid using standard Vim directory names like 'plugin'
  271. " Make sure you use single quotes
  272. call plug#begin('~/.vim/vimplug')
  273. Plug 'mcchrish/nnn.vim'
  274. Plug 'dylanaraps/wal.vim'
  275. Plug 'tpope/vim-commentary'
  276. Plug 'machakann/vim-sandwich'
  277. Plug 'itchyny/lightline.vim'
  278. Plug 'junegunn/vim-easy-align'
  279. Plug 'junegunn/goyo.vim'
  280. Plug 'mileszs/ack.vim'
  281. Plug 'whiteinge/diffconflicts'
  282. Plug 'scrooloose/nerdtree'
  283. Plug 'vimwiki/vimwiki'
  284. Plug 'RRethy/vim-hexokinase'
  285. call plug#end()
  286.  
  287. " easyalign settings
  288. xmap ga <Plug>(EasyAlign)
  289. nmap ga <Plug>(EasyAlign)
  290. " lightline settings
  291. let g:lightline = {'colorscheme': 'powerline'}
  292. " Settings for Vimwiki
  293. " Goyo Settings
  294. map <F3> :Goyo<CR>
  295. " NERDtree Settings
  296. "autocmd vimenter * NERDTree
  297. map <C-n> :NERDTreeToggle<CR>
  298. let g:NERDTreeWinPos = "right"
  299. " close vim window if only NTree left
  300. " autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
  301. " Settings for FASD jumping
  302. " J(Z) - cd to recent / frequent directories
  303. command! -nargs=* J :call J(<f-args>)
  304. function! J(...)
  305. let cmd = 'fasd -d -e printf'
  306. for arg in a:000
  307. let cmd = cmd . ' ' . arg
  308. endfor
  309. let path = system(cmd)
  310. if isdirectory(path)
  311. echo path
  312. exec 'cd ' . "\"${path}\""
  313. endif
  314. endfunction
  315.  
  316. if has('nvim')
  317. tnoremap <Esc> <C-\><C-n>
  318. endif
Add Comment
Please, Sign In to add comment